HSSF写Excel的问题

Ekidohna 2018-12-21 10:36:33
最近,我在做一个项目,这个项目需要向xls文件写入。我使用了~~经典的~~ HSSF,解决这个问题。程序运行正常,只是当我使用Excel打开查看时,它提示文件损坏。

于是我建了一个例子:
import org.apache.poi.hssf.usermodel.*;
import java.io.*;
import java.nio.file.NoSuchFileException;

import excel.Main.*;

public class Main {

public static void main(String[] args) {
outputer(new File("try/file/empty.xls"));
}
static public void outputer(File xlsFile) {
try {
HSSFWorkbook wb=new HSSFWorkbook();
wb.write(new FileOutputStream(xlsFile));
HSSFSheet sheet=wb.createSheet();
HSSFRow row=sheet.createRow(0);
HSSFCell cell=row.createCell(0);
cell.setCellValue("I'm ok!");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

结果是一样的,文件损坏。
Excel:office 2016
System: Windows 8.1
HSSF: 截至2018/12/1 的最新版本
"try/file/empty.xls":在try\file\empty.xls的一个空xls文件,由office新建创建。(不是由右键创建的)

哪位dalao帮我看看哪里有错误?
(路径是正确的,没有输出,3s后程序结束)
...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ekidohna 2019-01-07
  • 打赏
  • 举报
回复
本人是个小白,结贴方式谁帮一下。(CSDN手机版)
Ekidohna 2019-01-07
  • 打赏
  • 举报
回复
文件成功正常写入,谢谢Dalao
Ekidohna 2018-12-22
  • 打赏
  • 举报
回复
引用 1 楼 幽饮烛的回复:
wb.write(new FileOutputStream(xlsFile));
设置完内容后才能 write ,然后流没有正常关闭。
顶。。。。。。。。。
Ekidohna 2018-12-22
  • 打赏
  • 举报
回复
引用 1 楼 幽饮烛的回复:
wb.write(new FileOutputStream(xlsFile));
设置完内容后才能 write ,然后流没有正常关闭。
所以该怎么改。。。。。
Ekidohna 2018-12-22
  • 打赏
  • 举报
回复
所以说是应该这样吗?


static public void outputer(File xlsFile) {

try {

HSSFWorkbook wb=new HSSFWorkbook(new FileInputStream(xlsFile));

wb.write(new FileOutputStream(xlsFile));

HSSFSheet sheet=wb.createSheet();

HSSFRow row=sheet.createRow(0);

HSSFCell cell=row.createCell(0);

cell.setCellValue("I'm ok!");

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}
幽饮烛 2018-12-22
  • 打赏
  • 举报
回复
wb.write(new FileOutputStream(xlsFile));
设置完内容后才能 write ,然后流没有正常关闭。
a161674242123 2018-12-22
  • 打赏
  • 举报
回复
好深奥,我不懂
幽饮烛 2018-12-22
  • 打赏
  • 举报
回复
HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet=wb.createSheet();
HSSFRow row=sheet.createRow(0);
HSSFCell cell=row.createCell(0);
cell.setCellValue("I'm ok!");

FileOutputStream stream = new FileOutputStream(xlsFile);
try {
wb.write(stream );
}
finally{
stream.close();
}

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧