求教POI导出EXCEL,

[复制链接]
查看11 | 回复2 | 2011-5-21 11:48:59 | 显示全部楼层 |阅读模式
packagecom.DX.Impt;

importjava.io.IOException;
importjava.io.OutputStream;
importjava.util.List;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.poi.hssf.usermodel.HSSFCell;
importorg.apache.poi.hssf.usermodel.HSSFCellStyle;
importorg.apache.poi.hssf.usermodel.HSSFRow;
importorg.apache.poi.hssf.usermodel.HSSFSheet;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;

importcom.DX.Dao.PrintDao;

publicclassPrintDaoImptimplementsPrintDao{
privateHSSFWorkbookwb;
publicPrintDaoImpt()
{
wb=newHSSFWorkbook();
}
publicvoidcreatExcel(HttpServletResponseresponse,Stringname,String[]title,Listlist)
{
try{
OutputStreamos=response.getOutputStream();
response.setCharacterEncoding(\"UTF-8\");
response.reset();
response.setHeader(\"Content-Disposition\",\"attachment;filename=test123.xls\");
response.setContentType(\"application/vnd.ms-excel\");
creatSheet(os,list,name,title);
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicvoidcreatSheet(OutputStreamos,Listlist,Stringname,String[]title)
{
HSSFSheetsheet=wb.createSheet(\"newsheet\");
wb.setSheetName(0,name,HSSFWorkbook.ENCODING_UTF_16);
HSSFRowtrow=sheet.createRow((short)0);
for(inti=0;ititle.length;i)
{
creatCell(wb,trow,(short)i,title);
}
for(inti=0;ilist.size();)
{
Object[]one=(Object[])list.get(i);
i;
HSSFRowrow=sheet.createRow(i);
for(intj=0;jone.length;j)
{
creatCell(wb,row,(short)j,one[j].toString());
}
}
try{
os.flush();
wb.write(os);
os.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}
privatevoidcreatCell(HSSFWorkbookwb,HSSFRowrow,shortcol,Stringvalue)
{
HSSFCellcell=row.createCell(col);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(value);
HSSFCellStylecellstyle=wb.createCellStyle();
cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);
cell.setCellStyle(cellstyle);
}
}
我这样写导出的是一个名字是下划线的XLS文件,0KB大小内容为空

还有,为什么我真个把这部分代码全部删除运行后还能不报错,依旧能下载原来那个0KB文件?我重新部署过
回复

使用道具 举报

千问 | 2011-5-21 11:48:59 | 显示全部楼层
os.flush();
wb.write(os);
os.close();
最一开始是
wb.write(os);
os.flush();
os.close();
这么写的,也不好使…………
我调试看了,创建单元格那些都走了,但是就是没内容……囧RZ……
回复

使用道具 举报

千问 | 2011-5-21 11:48:59 | 显示全部楼层
你为什么要先os.flush();然后才write啊?你去掉flush试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行