it-swarm.dev

اباتشي POI قفل رأس الصفوف

هل هناك من هو على دراية بطريقة لقفل صف في جدول بيانات تم إنشاؤه باستخدام Apache POI 3.7؟ يعني القفل أنني أريد أن يظل صف العنوان للأعمدة مرئيًا عندما يقوم المستخدم بالتمرير خلال الصفوف. سيكون لجدول البيانات الذي قمت بإنشائه 500 صف وسيكون من المفيد أن تكون أسماء العمود مرئية دائمًا.

63
user1795755

في حال كنت بحاجة إلى تجميد أي صف معين في أي مكان في الورقة يمكنك استخدام (ضمن org.Apache.poi.ss.usermodel.Sheet) (متوفر في POI 3.7 أيضًا)

Sheet.createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow)

في حالتك إذا كنت ترغب في تجميد صفوف x الأولى فقط ، فسيتم إزالة قسم int leftmostColumn, int topRow ويمكنك استخدامه فقط

Sheet.createFreezePane(int colSplit, int rowSplit)

فمثلا

sheet1.createFreezePane(0, 5); // this will freeze first five rows
107
Sankumarsingh

للقيام بذلك ، يمكنك إنشاء جزء تجميد كما يلي:

workbook.getSheetAt(workbook.getActiveSheetIndex()).createFreezePane(0, 1);

هذا سيجمد الصف الأول في المكان. هناك طريقة أخرى تحتوي على المزيد من الخيارات ، لذا تحقق من API .

الشيء الوحيد الذي يجب ملاحظته هو استخدامك لمصنفات XSSF - هناك إشارة إلى وجود خطأ في الإصدار 3.8-beta3 يعمل على إصلاح سلوك أجزاء التجميد باستخدام جداول بيانات XSSF:

50884 - أجزاء تجميد XSSF و HSSF تتصرف الآن بنفس الطريقة (مطورو poi)

لا أعرف تفاصيل هذا ، لكن الأمر يستحق التحقيق إذا كنت في هذا القارب.

13
akokskis

لا يمكنك تجميد الصف الأوسط دون تجميد الصفوف الموجودة فوقه.

لنفترض أن لديك 100 صف وأن صف الرأس في السطر 50. قد تتوقع قفل الصف 50 فقط بحيث عند التمرير من السطر 1-49 ، يتم تمرير كل شيء للأعلى وعندما يصل إلى السطر 50 ، ينتقل الصف 50 إلى أعلى ويبقى هناك عندما يتم تمرير خطوط 51-100.

لكن هناك هل بديل. ما يمكنك فعله هو تجميع الصفوف ثم تجميدها.

أولاً ، قم بتجميع الصفوف من 1-49 ثم قم بتجميد الأجزاء من 1-50. الآن يمكن للمستخدم تقليل المجموعة ثم العمل مع الجدول مع رأس الجدول مقفل وفي الجزء العلوي.

sheet.groupRow(0, 49);
sheet.createFreezePane(0, 50);

هناك الصيد الصغيرة على الرغم من. لن يسمح لك MS Excel بتوسيع/​​طي مجموعة إذا كانت الورقة محمية. لهذا تحتاج إلى كتابة ماكرو.

1
Mithun P John