1
リストからExcelファイルを作成しようとしていますが、エクセルが作成され、データが追加されます。 Excelファイルを開こうとすると、「Excelがxx.xlsxで判読不能なコンテンツを検出しました」と表示されます。以下はApache POI - Excelがxx.xlsxで判読不能なコンテンツを見つけた
は私のコードです:
public static String createExcel(List<Localization> locs,
String location,
String revision,
String[] columnTitles) {
int columns = columnTitles.length;
FileOutputStream outputStream;
File file = null;
try {
file = new File("localization.xlsx");
outputStream = new FileOutputStream(file);
XSSFWorkbook wb = new XSSFWorkbook();
wb.getPackage().getPackageProperties().setRevisionProperty(revision);
// create an editable cell style
CellStyle unlockedCellStyle = wb.createCellStyle();
unlockedCellStyle.setLocked(false);
XSSFSheet sheet = wb.createSheet();
sheet.lockFormatCells(false);
sheet.lockFormatColumns(false);
sheet.lockFormatRows(false);
sheet.lockInsertRows(false);
// lock the sheet for editing
sheet.protectSheet("password");
for (int i = 0; i <= locs.size(); i++) {
Row row = sheet.createRow(i);
for (int j = 0; j < columns; j++) {
if (i == 0) {
row.createCell(j).setCellValue(columnTitles[j]);
}
else {
switch(j){
case 0:
row.createCell(j).setCellValue(locs.get(i - 1).getId());
break;
case 1:
row.createCell(j).setCellValue(locs.get(i - 1).getEntityId());
row.getCell(j).setCellStyle(unlockedCellStyle);
break;
case 2:
row.createCell(j).setCellValue(locs.get(i - 1).getValue());
row.getCell(j).setCellStyle(unlockedCellStyle);
break;
case 3:
row.createCell(j).setCellValue(locs.get(i - 1).getLanguage().getLanguageCode());
row.getCell(j).setCellStyle(unlockedCellStyle);
break;
case 4:
row.createCell(j).setCellValue(locs.get(i - 1).getCountry().getCountryCode());
row.getCell(j).setCellStyle(unlockedCellStyle);
break;
}
}
}
}
wb.write(outputStream);
outputStream.close();
wb.close();
// file.delete();
} catch (Exception e) {
log.error(e.getMessage());
}
if (file != null)
return file.getAbsolutePath().toString();
else
return null;
}
Apache POIのどのバージョンを使用していますか?最新のものでない場合は、アップグレードするとどうなりますか? – Gagravarr
'wb.getPackage()。getPackageProperties()。setRevisionProperty(revision)'ここで 'revision'とは何ですか?それは単一の数字でなければなりません。 http://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%202%20-%20Open%20Packaging%20Conventions.pdf#page=42&zoom=auto,51,720 –
@Axel Richterを参照してください。 。私はリビジョンの浮動小数点値を設定しています。 – gameOne