XSSFWorkbook 覆盖模板文件
XSSFWorkbook overriding the template file
我正在使用 XSSFWorkbook 创建一个 xlsx 文件,该文件存储 SQL 查询的结果 JAVA 8.
这个过程每个月都会完成,所以我使用模板 xslx 文件 template.xslx。
点它打开模板并将其另存为新文件。
它曾经有效,但现在模板也被修改并填充了数据(它应该保持为空,只有列大小、颜色、headers ...)。
我是这样做的:
ZipSecureFile.setMinInflateRatio(0);
OPCPackage pkg = OPCPackage.open(new File(excelMaquette)); // Template xlsx
XSSFWorkbook wb = new XSSFWorkbook(pkg); // Fichier xlsx
excelFinal += "_"+dateDuJour+".xlsx";
FileOutputStream stream = new FileOutputStream(new File(excelFinal));
XSSFSheet sheet = wb.getSheetAt(0);
XSSFCellStyle style = wb.createCellStyle();
//remplissage du tableau pour la feuille de détail
for (int i = 0 ; i <= nombreLigneResultat ; i++)
{
XSSFRow row = sheet.createRow((short)i+1);
for (int l = 0; l < nombreColonnes + 1; l ++)
{
XSSFCell cell = row.createCell(l);
cell.setCellValue(tab[i][l]);
//System.out.println (" xls = " + tab[i][l]);
}
}
wb.write(stream);
stream.close();
wb.close();
谢谢你的帮助
编辑:我尝试重写和重命名我的文件,但它仍然是一样的......
这很糟糕,因为有时新文件的数据会比前一个文件少,因此文件会显示新数据和额外的旧数据:(
为什么要使用 OPCPackage
?
OPCPackage
是从templateFile
以READ_WRITE
模式打开的。如果这将被关闭,它也会被保存。
你可以这样做:
try (FileInputStream inputStream = new FileInputStream(templateFile);
FileOutputStream outputStream = new FileOutputStream(new File(finalFile));
Workbook workbook = new XSSFWorkbook(inputStream)) {
wb.getSheetAt(0);
/*
*
* Your POI related operations.
*
*/
wb.write(stream);
outputStream.close();
wb.close();
}
我正在使用 XSSFWorkbook 创建一个 xlsx 文件,该文件存储 SQL 查询的结果 JAVA 8.
这个过程每个月都会完成,所以我使用模板 xslx 文件 template.xslx。
点它打开模板并将其另存为新文件。 它曾经有效,但现在模板也被修改并填充了数据(它应该保持为空,只有列大小、颜色、headers ...)。
我是这样做的:
ZipSecureFile.setMinInflateRatio(0);
OPCPackage pkg = OPCPackage.open(new File(excelMaquette)); // Template xlsx
XSSFWorkbook wb = new XSSFWorkbook(pkg); // Fichier xlsx
excelFinal += "_"+dateDuJour+".xlsx";
FileOutputStream stream = new FileOutputStream(new File(excelFinal));
XSSFSheet sheet = wb.getSheetAt(0);
XSSFCellStyle style = wb.createCellStyle();
//remplissage du tableau pour la feuille de détail
for (int i = 0 ; i <= nombreLigneResultat ; i++)
{
XSSFRow row = sheet.createRow((short)i+1);
for (int l = 0; l < nombreColonnes + 1; l ++)
{
XSSFCell cell = row.createCell(l);
cell.setCellValue(tab[i][l]);
//System.out.println (" xls = " + tab[i][l]);
}
}
wb.write(stream);
stream.close();
wb.close();
谢谢你的帮助
编辑:我尝试重写和重命名我的文件,但它仍然是一样的...... 这很糟糕,因为有时新文件的数据会比前一个文件少,因此文件会显示新数据和额外的旧数据:(
为什么要使用 OPCPackage
?
OPCPackage
是从templateFile
以READ_WRITE
模式打开的。如果这将被关闭,它也会被保存。
你可以这样做:
try (FileInputStream inputStream = new FileInputStream(templateFile);
FileOutputStream outputStream = new FileOutputStream(new File(finalFile));
Workbook workbook = new XSSFWorkbook(inputStream)) {
wb.getSheetAt(0);
/*
*
* Your POI related operations.
*
*/
wb.write(stream);
outputStream.close();
wb.close();
}