apache-poi вставляет имя файла в верхний или нижний колонтитул

Я использую библиотеку apache poi (poi-3.8-20120326.jar)

Как добавить имя файла в нижний колонтитул документа xls (hssf)?

Мой подход следующий:

final static public String FILE_NAME = "&[File]";
public static void insertFilename(Sheet sheet) {
    sheet.getFooter().setLeft(FILE_NAME);
}

Проблема в том, что Microsoft Excel 2003 отображает

Файл]

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

&[Файл]

Есть ли обходной путь или грязный трюк, чтобы избежать этого?

Спасибо


person MemLeak    schedule 06.03.2013    source источник


Ответы (1)


Это может выглядеть как «&[Файл]» в Excel, но это не то, как оно хранится внутри. Вы используете HSSF для своего файла .xls, поэтому используйте следующий статический метод HeaderFooter для получения внутреннего кода Excel для имени файла:

import org.apache.poi.hssf.usermodel.HeaderFooter;

String fileIndicator = HeaderFooter.file();

Беглый взгляд на исходный код определяет, что внутренний код представляет собой строку «&F».

Если кто-то использует XSSF для файла .xlsx, то соответствующего метода file не существует. Однако документация для XSSFHeaderFooter указывает что вы можете напрямую использовать строку "&F".

person rgettman    schedule 06.03.2013