poi导出Excel问题???????????

LOVEYOULOVE 2008-10-21 11:11:32
我使用poi导出Excel,第一次导出Excel正确,第二次导出Excel时就多了一行数据,这是什么原因?
...全文
289 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xstom19 2008-10-21
  • 打赏
  • 举报
回复
多出来的一行是第一次导出的数据?POIFSFileSystem没有重新new吧?
LOVEYOULOVE 2008-10-21
  • 打赏
  • 举报
回复
问题已经解决,是PoiDemo类中的数据共享造成的,谢谢各位.
xstom19 2008-10-21
  • 打赏
  • 举报
回复
PoiDemo这个类是你自己写的?
那问题多半就出在
pd.createExcelSheeet(areaOrganSeq,officeUserGroupSeq);
pd.exportExcel(demoSheet,fos);
另外你在servlet里创建HSSFSheet但没看到使用阿,直接在PoiDemo里创建不可以吗?
LOVEYOULOVE 2008-10-21
  • 打赏
  • 举报
回复

return mapping.findForward("saveExcel");不是这样的,我每次输出的都是不同的Excel文件

String areaOrganSeq = request.getParameter("areaOrganSeq");
String officeUserGroupSeq = request.getParameter("officeUserGroupSeq");
// System.out.println("++++++++++++++++++++++++++++++++++++++++++++++"+officeUserGroupSeq);
String fp = request.getParameter("flag");
HSSFWorkbook demoWorkBook = new HSSFWorkbook();
HSSFSheet demoSheet = demoWorkBook.createSheet("通讯录");
//得到当前时间
SimpleDateFormat dateformat1=new SimpleDateFormat("yyyyMMddHHmmssssss");
String time = dateformat1.format(new Date());
HttpSession session = request.getSession();
String fileName = time+".xls";
String folder = "Excel\\";
String fileName1 = folder + fileName;
folder = session.getServletContext().getRealPath("/")+folder;
if(!(new File(folder).isDirectory())) {
new File(folder).mkdir();
}
// HttpSession session = request.getSession();
String path = folder +fileName;
// System.out.println(path);
FileOutputStream fos = new FileOutputStream(path);
// System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+fos.toString());
try {
PoiDemo pd = new PoiDemo();
pd.createExcelSheeet(areaOrganSeq,officeUserGroupSeq);
pd.exportExcel(demoSheet,fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
request.setAttribute("areaOrganSeq", areaOrganSeq);
request.setAttribute("excel", fileName1);
request.setAttribute("seq", officeUserGroupSeq);
System.out.println("fp:"+fp);
if("null".equals(fp) || null == fp || "".equals(fp)) {
return mapping.findForward("excel");
} else {
}
LOVEYOULOVE 2008-10-21
  • 打赏
  • 举报
回复
不是这样的,我每次输出的都是不同的Excel文件

处理生成Excel文件
String areaOrganSeq = request.getParameter("areaOrganSeq");
String officeUserGroupSeq = request.getParameter("officeUserGroupSeq");
// System.out.println("++++++++++++++++++++++++++++++++++++++++++++++"+officeUserGroupSeq);
String fp = request.getParameter("flag");
HSSFWorkbook demoWorkBook = new HSSFWorkbook();
HSSFSheet demoSheet = demoWorkBook.createSheet("通讯录");
//得到当前时间
SimpleDateFormat dateformat1=new SimpleDateFormat("yyyyMMddHHmmssssss");
String time = dateformat1.format(new Date());
HttpSession session = request.getSession();
String fileName = time+".xls";
String folder = "Excel\\";
String fileName1 = folder + fileName;
folder = session.getServletContext().getRealPath("/")+folder;
if(!(new File(folder).isDirectory())) {
new File(folder).mkdir();
}
// HttpSession session = request.getSession();
String path = folder +fileName;
// System.out.println(path);
FileOutputStream fos = new FileOutputStream(path);
// System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+fos.toString());
try {
PoiDemo pd = new PoiDemo();
pd.createExcelSheeet(areaOrganSeq,officeUserGroupSeq);
pd.exportExcel(demoSheet,fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
request.setAttribute("areaOrganSeq", areaOrganSeq);
request.setAttribute("excel", fileName1);
request.setAttribute("seq", officeUserGroupSeq);
System.out.println("fp:"+fp);
if("null".equals(fp) || null == fp || "".equals(fp)) {
return mapping.findForward("excel");
} else {
}



xstom19 2008-10-21
  • 打赏
  • 举报
回复
你每次都输出到同一个excel文件自然会覆盖原先的纪录了。
你要么就输出到不同文件,要么就记住上次的行数,然后输出到行数++上
LOVEYOULOVE 2008-10-21
  • 打赏
  • 举报
回复
我现在的问题是:

我用poi导出数据为Excel时出现这么个问题:

如果第一次导出时为三条数据,导出正确

那第二次导出时数据为一条,可Excel中显示为三条,其中第一条为要导出的数据,后两条为第一次导出时的数据

这是什么原因????????????????

  • 打赏
  • 举报
回复
[Quote=引用 2 楼 LOVEYOULOVE 的回复:]
这怎么new一个空的Excel文件
[/Quote]
/**创建一个空白的excel文件,这个是excel文件在java中的对象,java不是操作对象的语言吗?
*那么就将一个excel文件映射成为一个对象。然而这个excel的对象在java就是HSSFWorkbook
*那么也就是说:在java中你要使用poi来操作excel那么HSSFWorkbook对象就是你要操作的那个excel文件,
*当HSSFWorkbook 对象是一个空对象的时候,就默认为你创建了一个excel文件
*/
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
youjianbo_han_87 2008-10-21
  • 打赏
  • 举报
回复
//建立工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//建立Excel 页
HSSFSheet sheet = workbook.createSheet();
//设置Cell 宽度
private void setColumnWidth(HSSFSheet sheet)
{
//根据你数据里面的记录有多少列,就设置多少列
sheet.setColumnWidth((short) 0, (short) 3000);
sheet.setColumnWidth((short) 1, (short) 3000);
sheet.setColumnWidth((short) 2, (short) 3000);
}

已经建好了一个只有一个sheet的excel,3列
yiyi_wx 2008-10-21
  • 打赏
  • 举报
回复
数据没问题的话就是哪里的代码有问题 好好查一下
不行就debug看看
LOVEYOULOVE 2008-10-21
  • 打赏
  • 举报
回复
这怎么new一个空的Excel文件

81,122

社区成员

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

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