使用ApachePOI(Java)创建的Excel文件可以';不能在Windows上打开
在我的系统中,我有一个类,可以创建一个包含一些数据的excel 基本上,我从变量ArrayList>读取所有字符串值,并将它们写入excel单元格使用ApachePOI(Java)创建的Excel文件可以';不能在Windows上打开,java,windows,excel,apache-poi,Java,Windows,Excel,Apache Poi,在我的系统中,我有一个类,可以创建一个包含一些数据的excel 基本上,我从变量ArrayList>读取所有字符串值,并将它们写入excel单元格 public void writeData(Data data, int sheetNumber) throws EncryptedDocumentException, InvalidFormatException, IOException { org.apache.poi.ss.usermodel.Workbook work
public void writeData(Data data, int sheetNumber)
throws EncryptedDocumentException, InvalidFormatException, IOException {
org.apache.poi.ss.usermodel.Workbook workbook;
try {
workbook = WorkbookFactory.create(new File(path));
} catch (FileNotFoundException e) {
workbook = new HSSFWorkbook();
}
org.apache.poi.ss.usermodel.Sheet sheet;
try {
sheet = workbook.createSheet("Sheet" + sheetNumber);
} catch (IllegalArgumentException e) {
sheet = workbook.getSheet("Sheet" + sheetNumber);
}
int dataListSize = data.getData().size();
for (int i = 0; i < dataListSize; i++) {
Row row = sheet.createRow(i);
int rowSize = data.getData().get(i).size();
for (int j = 0; j < rowSize; j++) {
row.createCell(j);
row.getCell(j).setCellValue(String.valueOf(data.getData().get(i).get(j)));
}
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File(path));
workbook.write(fos);
} catch (IOException e) {
e.printStackTrace();
} finally {
workbook.close();
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public-void-writeData(数据数据,int-sheetNumber)
引发EncryptedDocumentException、InvalidFormatException、IOException{
org.apache.poi.ss.usermodel.工作簿;
试一试{
工作簿=WorkbookFactory.create(新文件(路径));
}catch(filenotfounde异常){
工作簿=新的HSSF工作簿();
}
org.apache.poi.ss.usermodel.Sheet;
试一试{
工作表=工作簿.createSheet(“工作表”+工作表编号);
}捕获(IllegalArgumentException e){
工作表=工作簿.getSheet(“工作表”+工作表编号);
}
int dataListSize=data.getData().size();
for(int i=0;i
据我所知,代码运行良好,我在Ubuntu上开发,总是先尝试这里的代码,创建的EXCEL很好,我一点问题都没有
当我将其中一个应用到Windows(XP和7,在两者上都试用过)时,我无法使用Microsoft Excel打开它们中的任何一个 有没有人有这方面的经验
谢谢。正如Axel提到的,问题在于文件扩展名 我可以在Ubuntu(14.04和16.04)中打开以这种方式创建的文件,但不能在Windows(7、8和10)中打开
解决方案是使用
.xls
扩展名,而不是.xlsx
,这样我就可以在任何操作系统中打开和使用文件。HSSF是Office 97*.xls格式。(它代表HorribleSpreadSheetFormat。)
}catch(filenotfounde异常){
工作簿=新的HSSF工作簿();
}
当您这样做时,您选择了*.xls格式。如果需要*.xlsx格式,则需要使用XSSFWorkbook
“我无法使用Microsoft Excel打开其中任何一个。”为什么不能?什么错误消息?请举例说明
路径中的内容。您使用的是什么版本的Apache POI?如果不是最新版本,升级时会发生什么?对不起,我没有错误消息。正如我所说,我使用ubuntu,一些同事使用Windows。我希望明天会收到这些信息。我使用的是3.14版本。(我认为这是最新的(不包括测试版))如果文件(路径)
不存在,则您正在创建工作簿=新的HSSFWorkbook()
AHSSFWorkbook
是BIFF
格式的Excel工作簿。必须将其命名为*.xls
。如果将其命名为*.xlsx
,则Excel将不会打开它,因为文件格式和文件扩展名不匹配。这就是为什么我要举一个例子来说明路径中的内容。也许如此,我使用xls而不是xlsx它仍然不适用于我,请看,