Генерация Excel с использованием Apache POI - PullRequest
1 голос
/ 01 августа 2011

Я сгенерировал документ Excel (.xls), используя Apache POI.Я использую классы HSSF.

Может ли кто-нибудь посоветовать мне следующий вопрос:

Как мы можем поддерживать постоянные заголовки столбцов в части диаплея и иметь прокрутку только для части данных?

То есть я хочу, чтобы столбцы заголовка всегда были видны при прокрутке файла Excel.

Спасибо, Дэвид

Ответы [ 3 ]

4 голосов
/ 01 августа 2011

Одним из вариантов может быть предложение повторяющихся строк из тембу.Не уверен в ваших точных потребностях, но, возможно, вы захотите вместо этого использовать панель замораживания.

Чтобы первая строка всегда была на экране, не прокручиваясь, вы должны сделать:

Workbook wb = new HSSFWorkbook();
Sheet sheet1 = wb.createSheet("No Scroll");
sheet1.createFreezepane(0,1);

Вы можете заморозить строки, столбцы или оба, см. этот javadoc или этот для деталей

2 голосов
/ 01 августа 2011

Ознакомьтесь с Руководством для разработчиков Apache POI:

Можно настроить повторяющиеся строки и столбцы в ваших распечатках с помощью функции setRepeatingRowsAndColumns () в классе HSSFWorkbook.

Эта функция содержит 5 параметров.Первый параметр - это индекс листа (0 = первый лист).Второй и третий параметры определяют диапазон для столбцов, которые будут восстановлены.Чтобы столбцы не повторялись, передайте -1 как начальный и конечный столбец.Четвертый и пятый параметры определяют диапазон для повторяющихся строк.Чтобы столбцы не повторялись, передайте -1 как начальную и конечную строки.

Workbook wb = new HSSFWorkbook();
Sheet sheet1 = wb.createSheet("new sheet");
Sheet sheet2 = wb.createSheet("second sheet");

// Set the columns to repeat from column 0 to 2 on the first sheet
wb.setRepeatingRowsAndColumns(0,0,2,-1,-1);
// Set the the repeating rows and columns on the second sheet.
wb.setRepeatingRowsAndColumns(1,4,5,1,2);

FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
0 голосов
/ 10 июля 2013

Это должно помочь вам. Я искал несколько дней и нашел это. Это решило мою проблему.

 `Workbook wb = new XSSFWorkbook();
    CreationHelper createHelper = wb.getCreationHelper();
    Sheet sheet1 = wb.createSheet("new sheet");

    Row row = sheet1.createRow((short) 0);
    // Create a cell and put a value in it.
    row.createCell(0).setCellValue(
            createHelper.createRichTextString("Freeze"));
    for (int i = 1; i < 20; i++) {
        row = sheet1.createRow((short) i);
        row
                .createCell(0)
                .setCellValue(
                        createHelper
                                .createRichTextString("This is the Moving Row"));
    }

    // Freeze just one row
    sheet1.createFreezePane(0, 1, 0, 1);`
...