Я открываю файл XLSX следующим образом:
File file = new File("myPath/to/file.xlsx");
SpreadsheetMLPackage pkg = SpreadsheetMLPackage.load(file);
Затем, не делая ничего, сохраняю его в том же файле:
pkg.save(file);
Мой файл теперь это файл Microsoft OO XML, а не файл Microsoft Excel 2007+ , как это было раньше.
Как я могу получить файл Microsoft Excel 2007+?
Примечание
Если я создаю новый файл, подобный этому:
SpreadsheetMLPackage pkg = SpreadsheetMLPackage.createPackage();
pkg.save(file);
Мой вывод - файл Microsoft Excel 2007+. Поэтому кажется странным, что при загрузке файла конвертируйте его в формат OO XML.
Шаги для воспроизведения
- Создайте файл Excel (для меня на windows с Excel 2013 ) и сохраните его как
test.xlsx
. - Передайте этот файл в Ubuntu. Запустите эту команду:
file test.xlsx
, вы получите test.xlsx: Microsoft Excel 2007+
. Выполните этот скрипт:
try {
File file = new File("/home/userName/Downloads/test.xlsx");
SpreadsheetMLPackage pkg = SpreadsheetMLPackage.load(file);
pkg.save(file);
} catch (Docx4JException e1) {e1.printStackTrace();}
Запустите снова эту команду: file test.xlsx
и на этот раз вы получите test.xlsx: Microsoft OOXML
.