怎么通过JAVA往WORD的里写一张带数据表格?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么通过JAVA往WORD的里写一张带数据表格?相关的知识,希望对你有一定的参考价值。

需要向WORD插入的不是文字,而是带数据的表格,就相当于EXCLE的格式,谁有具体的例子来一个吗,或者能行得通的方法推荐一个。
对了 最好是高点版本的OFFICE 我用的是2013的 POI什么的,肯定不支持吧? 谁有肯定能行得通的方法来一个。

首先需加载你的SQLCUTE是不能错(指明点就是数据库的连接)创建的方法查询所有的数据:publicListAllObject();得到所有的数据,我们就可以开始了(最好是写在你的Service中)创建表格输出的方法(我们的数据肯定是以流的形式写进写出的,表明点就是下载该文件\\恩文件上传下载应该会吧)好话不多说,开始工程在service中定义方法:publicInputStreamgetInputStream()//为了好看点我就采用和word同类的软件exel//相当于我们创建的exel的窗体,可以查看exel的表格样式就是.xslHSSFWorkbookwb=newHSSFWorkbook();//创建sheet1一般我们的exel默认的有三个exelHSSFSheeths=wb.createSheet("sheet1");//创建row行HSSFRowhr=hs.createRow(0);//创建单元格HSSFCellhc=hr.createCell((short)0);//设置单元格的编码hc.setEncoding(HSSFCell.ENCODING_UTF_16);//设置表头的value的值hc.setCellValue("ID");//还要创建多个表头的值hc=hr.createCell((short)1);hc.setEncoding(HSSFCell.ENCODING_UTF_16);hc.setCellValue("姓");hc=hr.createCell((short)2);hc.setEncoding(HSSFCell.ENCODING_UTF_16);hc.setCellValue("名");hc=hr.createCell((short)3);hc.setEncoding(HSSFCell.ENCODING_UTF_16);hc.setCellValue("年龄");//从数据库中查出所有的用户Listls=iuserdao.AllListUser();//便利所有的数据for(inti=0;i<ls.size();i++)//得到第i个数据Userus=ls.get(i);//把数据放入表格中i是从0开始读取所以我们加一hr=hs.createRow(i+1);//设置编码hc=hr.createCell((short)0);hc.setEncoding(HSSFCell.ENCODING_UTF_16);//设置序号也就是在ID下的值,同样的是从0开始hc.setCellValue(i+1);//我们已经从数据库中获得了数据,所以我们可以从user中取出hc=hr.createCell((short)1);hc.setEncoding(HSSFCell.ENCODING_UTF_16);hc.setCellValue(us.getUname());hc=hr.createCell((short)2);hc.setEncoding(HSSFCell.ENCODING_UTF_16);hc.setCellValue(us.getSuname());hc=hr.createCell((short)3);hc.setEncoding(HSSFCell.ENCODING_UTF_16);hc.setCellValue(us.getAge());//这里是在硬盘上创建一个临时文件用于用户下载,这是第一种方法//放入文件,所以必须创建个文件StringfileName=com.test.util.CUtils.getRandomString(5);//上面的文件名是用随机数写的,这样就会没相同的文件,便于输写fileName=newStringBuffer().append(fileName).append(".xls").toString();finalFilefile=newFile(fileName);//将文件输出到我们的硬盘tryOutputStreamos=newFileOutputStream(file);//把我们的数据输出到我们的HSSFWookbook中,以写入文件中wb.write(os);os.close();catch(Exceptione)//TODOAuto-generatedcatchblocke.printStackTrace();//构建个输入流InputStreamis=null;try//输入文件is=newFileInputStream(file);catch(FileNotFoundExceptione)//TODOAuto-generatedcatchblocke.printStackTrace();returnis;//返回该输入流,完成写完之后,可在servlet中直接调用,service中的getInputStream方法你可以写方法接收,也可以写流接收,因为过来的方法有返回值ISpublicInputStreamgetDownloadFile()returniuserservice.getInputStream();这里后面就是你自己的事勒,简单点就是重定向某个页面(查看成功啦)等等这有个弊端就是在Disk(磁盘)创建了多个文件,也就是不用的时候就是垃圾数据。实在有点勉强的话,加我 :236133039帮你解答(实战操作) 参考技术A 使用poi。先在后台查出你想要的数据,然后使用poi来生成带格式的文档。具体例子网上很多,关键字:poi生成Word。试试看
你后边说的那个问题就不太懂了。一般情况下,都是生成低版本的office,高版本的会自动兼容的。2013的我不知道,比如你可以生成07的Word,2013的应该能兼容,也就是说可以打开。
参考技术B 这个你可以试试一些控件比如iWebOffice2009他可以根据自定义的书签自己定义一套模板如果加载的时候填充模板给模板中书签赋值就可以了 参考技术C 用最新版本的POI 3.10,jar可以去http://archive.apache.org/dist/poi/dev/bin/
下载 poi-bin-3.10-beta2-20130904.zip
HSSF是指2007年以前的,XSSF是指2007年版本以上用的.
也就是说2013要用XSSF来做excel.
具体的用法与例子,请看http://poi.apache.org/spreadsheet/quick-guide.html
里面有很详细用XSSFWorkbook导出xlsx格式的例子.
望采纳.追问

我不是要做EXCEL 我是想在word里用java把数据库返回的数据写一个表格。

追答

难道你不是想把数据库里的数据写到excel里么??

一种方法:把现成的excel,即excel里已经有表格样式的模样,只需要把从数据库取出来的数据,分别填写到相当的表格对应的单元格里.

第二种方法:没有现成的excel, 纯用java生成excel以及带表格样式模样的,包括所有data.,完全可以JAVA实现,包括表格的黑色边框,title,remarks什么的..

追问

当然不是EXCEL,要是EXCEL就不用这么费劲了,网上很多例子,要用word出表格汇报用。

参考技术D 用iText可以追问

你了解iText吗 我有些问题想问一下?

追答

还行我也在做这两天,也遇见了问题

java中怎么实现读取word.doc文档分辨标题,文号,签发日期等信息

用模板,设置一些标签,对应你要读的字段,poi读对应标签内容就可以解析出来。
要求填写字段的时候,把字段填写的对应标签中,一般是编程实现。。如果用户自己做的不行。追问

word是用户上传上来的,样式不是很固定。怎么弄模版。不知道怎么分类数据
最后写入到xml中,但是标题,文号,发布公文的单位和日期要怎么往xml里存。

.doc格式

参考技术A 有没有实现这个功能亲 ,我现在也有这块的需求

以上是关于怎么通过JAVA往WORD的里写一张带数据表格?的主要内容,如果未能解决你的问题,请参考以下文章

Java 出力Excel 文件,并向该文件中写固定格式的日期。我往文件里写的是yyyy-mm-dd

Word怎样在一张纸上放多张图片

java中怎么实现读取word.doc文档分辨标题,文号,签发日期等信息

word文档中的表格或者excel中,用啥键可以使光标往下移动呢?常用的快捷键都有哪些?

VBS怎么往CSV文件中写数据

word文档中的表格或者excel中,用啥键可以使光标往下移动呢?常用的快捷键都有哪些?