Java用poi读取excel文件数据 – haodro.com 您所在的位置:网站首页 poi读取xls文件 Java用poi读取excel文件数据 – haodro.com

Java用poi读取excel文件数据 – haodro.com

2023-03-21 12:54| 来源: 网络整理| 查看: 265

原文链接:http://www.diybl.com/course/3_program/java/javajs/2008910/141622_3.html

POI 是Apache的一个开源的工具包,可以在Apache的官网下载到jar包。 在项目库中导入此jar包

1、设置分页符的bug

POI里的HSSFSheet类提供了setRowBreak方法可以设置Sheet的分页符。

Bug:如果你要设置分页符的Sheet是本来就有的,并且你没有在里面插入过分页符,那么调用setRowBreak时POI会抛出空指针的异常。

解决方法:在Excel里给这个sheet插入一个分页符,用POI打开后再把它删掉,然后你就可以随意插入分页符了。

如果sheet是由POI生成的则没有这个问题。我跟踪了setRowBreak的源代码,发现是Sheet.Java下的PageBreakRecord rowBreaks这个变量在搞鬼,如果Sheet里原来没有分页符,开发这个模块的那位兄台忘了为这个对象new实例,所以只能我们先手工给Excel插入一个分页符来触发POI为rowBreaks创建实例。

2、如何拷贝行

我在gmane.org的POI用户论坛翻遍了每个相关的帖子,找遍了api,也没看到一个拷贝行的方法,没办法,只能自己写:

//注:this.fWorkbook是一个HSSHWorkbook,请自行在外部new public void copyRows (String pSourceSheetName, String pTargetSheetName, int pStartRow, int pEndRow, int pPosition) { HSSFRow sourceRow = null; HSSFRow targetRow = null; HSSFCell sourceCell = null; HSSFCell targetCell = null; HSSFSheet sourceSheet = null; HSSFSheet targetSheet = null; Region region = null; int cType; int i; short j; int targetRowFrom; int targetRowTo; if ((pStartRow == -1) || (pEndRow == -1)) { return; } sourceSheet = this.fWorkbook.getSheet(pSourceSheetName); targetSheet = this.fWorkbook.getSheet(pTargetSheetName); //拷贝合并的单元格 for (i = 0; i < sourceSheet.getNumMergedRegions(); i++) { region = sourceSheet.getMergedRegionAt(i); if ((region.getRowFrom() >= pStartRow) && (region.getRowTo() filename=book.xls” ); 然后提交给它的时候会时候会提示下载, 下载的就是生成的EXCEL文件。

book.xls的存放路径应该是哪里?

使用poi的hssf生成一个excel文件以后 有一个主类Workbook(相当于一个excel文件)的方法 Workbook.write(OutputStream)可以写到response.getOutputStream()里面 如果事先设置response的contentType为excel和下载的附件名称就可下载excel

HSSFWorkbook book = _proxy.expertExcel(_formBean,_login); if(book!=null) { response.setContentType ( "application/ms-excel" ) ; response.setHeader ( "Content-Disposition" , "attachment;filename="+new String("导出Excel.xls".getBytes(),"iso-8859-1")); book.write(response.getOutputStream());}

其中expertExcel无非是从数据库或者其他地方获取数据创建excel即可.

response.setHeader(“Content-disposition”,“attachment; filename=book.xls” ); 原来加上attachment浏览器就会提示保存或者打开,是我想要的。Thanks all.

1.用poi生成Excel文件,和WORD文档都可以,是个不错的方法,参见poi网站,楼上的朋友描述的很清楚了,此方法适用于生

成,读取,解析xls文件 2.另外一种更简单的方法:只适用于显示用的EXCEL文件格式,生成常规的html文件格式,后缀命名方式为.xls即可. 3.espreadsheet适用于网上即时的excel文件交互操作,生成,解析,保存修改,但需要购买

生成一个rtf文件,然后扩展名写”.doc”,OK

用这个组件向excel写数据时,总是出现中文乱码情况,请问怎样解决?

源代码:

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFHeader header = sheet.getHeader(); header.setCenter("Center Header"); HSSFRow row = sheet.createRow((short)0); HSSFCell cell = row.createCell((short)0); cell.setCellValue(1); row.createCell((short)1).setCellValue(1.2123654); row.createCell((short)2).setCellValue("This is a string"); row.createCell((short)3).setCellValue(true); row = sheet.createRow((short)1); cell = row.createCell((short)0); cell.setCellValue(new Date()); row.createCell((short)1).setCellValue(str); row.createCell((short)2).setCellValue("This我是一个好人string"); FileOutputStream fileOut = new FileOutputStream("d:/filename.xls"); wb.write(fileOut); fileOut.close();

当我打开这个”d:/filename.xls”文件时,其中写入的中文全都是乱码!!! 如何解决???

源代码:

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFHeader header = sheet.getHeader(); header.setCenter("Center Header"); HSSFRow row = sheet.createRow((short)0); HSSFCell cell = row.createCell((short)0); cell.setCellValue(1); row.createCell((short)1).setCellValue(1.2123654); row.createCell((short)2).setCellValue("This is a string"); row.createCell((short)3).setCellValue(true); row = sheet.createRow((short)1); cell = row.createCell((short)0); cell.setCellValue(new Date()); String str = new String("我是一个好人!!!"); row.createCell((short)1).setCellValue(str); row.createCell((short)2).setCellValue("This我是一个好人string"); FileOutputStream fileOut = new FileOutputStream("d:/filename.xls"); wb.write(fileOut); fileOut.close();

当我打开“d:/filename.xls”文件察看时,里面的中文字符全部是乱码! 请问如何解决?

response.setHeader("Content-disposition","inline; filename=***.xls");就可以了,要是想要word 就 response.setHeader("Content-disposition","inline; filename=test1.xls");

引用 pengruihua 说: 有趣的是,对一个html文件(数据在表格中),当把后缀改为xls后,打开文件即是。这个只能说明excel强,这样写得xls,在JXL或者POI中都是不认的。 加一句,用POI写Excel有点问题,当反复读写一个excel文件的时候,读的速度会越来越慢。我的一个生成excel的就是,到了几千条记录的时候慢得就不能接受了,最后只好先生成cvs的文本,再将文本导成xls

文件

引用 java_century 说:

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFHeader header = sheet.getHeader(); header.setCenter("Center Header"); HSSFRow row = sheet.createRow((short)0); HSSFCell cell = row.createCell((short)0); cell.setCellValue(1); row.createCell((short)1).setCellValue(1.2123654); row.createCell((short)2).setCellValue("This is a string"); row.createCell((short)3).setCellValue(true); row = sheet.createRow((short)1) cell = row.createCell((short)0); cell.setCellValue(new Date()); String str = new String("我是一个好人!!!"); row.createCell((short)1).setCellValue(str); row.createCell((short)2).setCellValue("This我是一个好人string"); FileOutputStream fileOut = new FileOutputStream("d:/filename.xls"); wb.write(fileOut); fileOut.close();

当我打开“d:/filename.xls”文件察看时,里面的中文字符全部是乱码! 请问如何解决?

使用POI这样处理中文

HSSFCell cell = row.createCell((short)1); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("中文");

文章出处:http://www.diybl.com/course/3_program/java/javajs/2008910/141622_3.html

以上是互联网集市为您收集整理的Java用poi读取excel文件数据全部内容,希望文章能够帮你解决Java用poi读取excel文件数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有