poi 创建 word java poi创建word表格
摘要:怎么使用JAVA,POI读写word文档 如何使用JAVA、POI读写word文档??能不能将一个word的内容完全读过来,放到一个新生成的word文件中去,要求能将word中的表格、图片等保留,格式...
发布日期:2020-10-29怎么使用JAVA,POI读写word文档
如何使用JAVA、POI读写word文档??能不能将一个word的内容完全读过来,放到一个新生成的word文件中去,要求能将word中的表格、图片等保留,格式不变。
最好能给个例子?网上多是很早以前的那个解决方法如下:,只能读文本内容,且新生成的word文件打开时总是要提示选择编码,不太好用,希望能有新的解决方案??!!poi操作word1.1 添加poi支持:包下载地址1.2 POI对Excel文件的读取操作比较方便,POI还提供对Word的DOC格式文件的读取。
但在它的发行版本中没有发布对Word支持的模块,需要另外下载一个POI的扩展的Jar包。
下载地址为;下载extractors-0.4_zip这个文件2、提取Doc文件内容 public static String readDoc(String doc) throws Exception {// 创建输入流读取DOC文件 FileInputStream in = new FileInputStream(new File(doc)); WordExtractor extractor = null; String text = null;// 创建WordExtractor extractor = new WordExtractor();// 对DOC文件进行提取 text = extractor.extractText(in); return text; } public static void main(String[] args) { try{ String text = WordReader.readDoc("c:/test.doc"); System.out.println(text); }catch(Exception e){ e.printStackTrace(); } }3、写入Doc文档 import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class WordWriter { public static boolean writeDoc(String path, String content) { boolean w = false; try { // byte b[] = content.getBytes("ISO-8859-1"); byte b[] = content.getBytes(); ByteArrayInputStream bais = new ByteArrayInputStream(b); POIFSFileSystem fs = new POIFSFileSystem(); DirectoryEntry directory = fs.getRoot(); DocumentEntry de = directory.createDocument("WordDocument", bais); FileOutputStream ostream = new FileOutputStream(path); fs.writeFilesystem(ostream); bais.close(); ostream.close(); } catch (IOException e) { e.printStackTrace(); } return w; } public static void main(String[] args) throws Exception{ String wr=WordReader.readDoc("D:\\test.doc"); boolean b = writeDoc("D:\\result.doc",wr);
如何使用POI解决word2007中字符替换问题
w;w;w。
可以将word的后缀名改为zip然后打开找到word/document;>dxa" />- eastAsia":r>02w,这样可以更加方便的了解他的底层构造,获得到cell里的值,即cell.getText();在这里注意cell中value的长度:p>- w;w:tcPr>w; /首先就是要明白解决的方案是:先删后添。
就是利用Paragraph创建run,在创建完毕后循环遍历tableàrowàcell.xml文件...
JAVA poi写到excel中,网上的例子都是会先创建一个文件,一个sheet,...
1-apache的POI,此方法对Excel的导出做的很好,目前对Word的导出方面的功能尚未完全。
2-纯JavaScript脚本实现。
主要通过客户端调用本机Office组件来实现。
3-在JSP页面引入头文件实现。
纯JavaScript脚本实现细节方面大体是创建一个word组件ActiveXObject("Word.Application"),用js通过表ID取得表内容然后保存到word,要注意的是js实现有很多不好的地方,例如Internet选项需要把ActiveX空间全部启用,安全级别设置为中。
这样的话岂不是每台机器都要配置一下。
其次每次生成word文档以后弹出对话框(无法保存此文件,因为它已在别处打开(C:\...\STARTUP\Powerword.dot)),出现此问题就需要把C:\Documents and Settings\当前用户名\Application Data\Microsoft\Word\STARTUP下的Powerword.dot文件删除,每次遇到此问题就需要删除文件来解决,十分不方便。
JSP页面引入来实现Word保存就方便多了,但是也有不足的地方,首先如果需要引入如果需要下载的话就引入其实如果大家用框架做就方便多了,比如Struts2。
在Action里直接写如下代码:if(out!=null){String fileName="";fileName+="评价报告.doc";try {HttpServletResponse response = ServletActionContext.getResponse();response.setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("GB2312"), "8859_1"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}out是jsp页面表单元素,一个button,用于提交表单到相应Action进行Word下载。
Action设置jsp页面头文件。
这样每次点击button就可以把相应jsp页面的内容保存到Word中并且支持下载,Word中内容并且是可编辑状态。
不足的地方在于由于表内容是动态生成,有的需要先查看在下载Word,就需要另外建立一个新JSP页面进行Word下载,当然首先要在struts.xml里配置好页面转向。
新建立的页面传值同查看页面要保持一样。
我电脑的word怎么打不开??
[编辑本段]Microsoft Word-基本信息 第一个Windows版本的Word发售于1989年,价格是500美元。
在 Windows 3.0 发行之后的一年, 销售开始好转, (WordMicrosoft Word1.0 与 Windows 3.0 的协作比先前版本更好)。
制作一个Windows版WordPerfect的失败已证实为致命的错误。
它是Word 2.0版本,但是却作为市场主流坚实地发展起来。
Word在苹果机市场上没有强大的竞争对手,尽管有程序像Nisus Writer提供“不连续的选择”等的特色功能,这些功能直到Office XP中的Word 2002才添加。
另外,一些用户抱怨Word没有在1987年的3.01版与1991年的5.0版之间实行大的检查。
相对于它的易用性和特色功能来说,由于典雅,苹果机的Word 5.1是一个主流的文字处理器。
但是1994年发布的苹果机的6.0版却受到了广泛的嘲笑。
这是Word第一个基于Windows和Macs之间通用代码的版本;许多人抱怨它慢、简陋及占过多内存。
Windows版本也计入6.0在内以协调跨越不同平台的产品命名(尽管事实上最早的Windows版本为Word 2.0)。
Word的较晚版本拥有比文字处理更多的功能。
绘图工具可进行简单的桌面出版运作,如在文件中加设图像。
近年来已增设Collaboration、文件校对、多语言支援与及其他功能。
[编辑本段]Microsoft Word-作用 使用Microsoft Office Word创建和编辑信件,报告,网页或电子邮件中的文本和图形。
Microsoft Word使用示范MS-DOS计算机开发的Word的第一代于1983年底发行,但是反响并不好,销售落后于WordPerfect等对手产品。
尽管如此,在Macintosh系统中,Word在1985年发布以后赢得了广泛的接受,尤其是对于在两年以后第二次大型发布的Word 3.01 for Macintosh (Word 3.00 由于有严重bug很快下线)。
和其他Mac软件一样,Word for Mac是一个真正的(所见即所得) 编辑器。
由于MS-DOS是一个字符界面系统,Word for DOS是为IBM PC 研发的第一个文本编辑器,在编辑的时候屏幕上直接显示的是“黑体”“斜体”等字体 标识符,而不是“所见即所得”。
其他的DOS 文本编辑器,如WordStar和WordPerfect等,在屏幕显示时使用的是简单文本显示加上标识代码,或者加以颜色区别。
尽管如此,和大多数DOS软件一样,程序为了执行特定的功能,都有自己特殊的,而且往往是复杂的命令组需要使用者去记忆。
(比如在Word for DOS中,保存文件需要依次执行Escape-T-S),而大部分秘书们已经知道如何使用WordPerfect,公司就不大愿意更换成对手产品,何况提供的新优点有限。
[编辑本段]Microsoft Word-专业测评 Microsoft Office Word 2007 通过将一组功能完备的撰写工具与易于使用的 Microsoft Office Fluent 用户界面相结合,来帮助Microsoft Word效果图用户创建和共享具有专业外观的内容。
下面是 Office Word 2007 可以帮助您更快地创建具有专业外观的内容的 10 大理由。
1. 减少设置格式的时间,将主要精力集中于撰写文档。
Office Fluent 用户界面可在需要时提供相应的工具,使您可轻松快速地设置文档的格式。
现在,您可以在 Office Word 2007 中找到适当的功能来更有效地传达文档中的信息。
使用“快速样式”和“文档主题”,您可以快速更改整个文档中文本、表格和图形的外观,使之符合您喜欢的样式或配色方案。
2. 借助 SmartArt 图示和新的制图工具更有效地传达信息。
新的 SmartArt 图示和新的制图引擎可以帮助您使用三维形状、透明度、投影以及其他效果创建外观精美的内容 3. 使用构建基块快速构建文档。
Office Word 2007 中的构建基块可用于通过常用的或预定义的内容(如免责声明文本、重要引述、提要栏、封面以及其他类型的内容)构建文档。
这样就可以避免花费不必要的时间在各文档间重新创建或复制粘贴这些内容;还有助于确保在组织内创建的所有文档的一致性。
4. 直接从 Office Word 2007 另存为 PDF 或 XPS。
Office Word 2007 提供了与他人共享文档的功能。
您无需增加第三方工具,就可以将 Word 文档转换为可移植文档格式 (PDF) 或 XML 文件规范 (XPS) 格式,从而有助于确保与使用任何平台的用户进行广泛交流。
1 5. 直接从 Office Word 2007 中发布和维护博客。
现在,您可以直接从 Office Word 2007 发布博客。
您可以将 Office Word 2007 配置为直接链接到您的博客网站,使用丰富的 Word 体验来创建包含图像、表格和高级文本格式设置功能的博客。
6. 使用 Office Word 2007 和 Microsoft Office SharePoint Server 2007 控制文档审阅过程。
通过 Office SharePoint Server 2007 中内置的工作流服务,您可以在 Office Word 2007 中启动和跟踪文档的审阅和批准过程,帮助加速整个组织的审阅周期,而无需强制用户学习新工具。
7. 将文档与业务信息连接。
使用新的文档控件和数据绑定创建动态智能文档,这种文档可以通过连接到后端系统进行自我更新。
组织可以利用新的 XML 集成功能来部署智能模板,以协助用户创建高度结构化的文档。
8. 删除文档中的修订、批注和隐藏文本。
使用文档检查器检测并删除不需要的批注、隐藏文本或个人身份信息,以帮助确保在发布文档时不会泄露敏感信息。
...
word是什么意思
使用java中的io进行读取BufferedReader bufferedReader = null;File file = new File("文档地址+文档名.docx");if(!file.exists()){System.out.println("文件不存在");} else {bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "读取的字符格式(UTF-8或GBK)"));String lineText = null;while((lineText = bufferedReader.readLine()) != null){if (linText != null && !lineText.eq("")){System.out.println("一次读取一行,一行内容为:" + lineText);
java解析word文档有哪些方法
java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法。
经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。
rtf格式文件表面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。
----- 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。
----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。
1、采用字节的形式读取rtf模板内容2、将可变的内容字符串转为rtf编码3、替换原文中的可变部分,形成新的rtf文档主要程序如下:public String bin2hex(String bin) {char[] digital = "0123456789ABCDEF".toCharArray();StringBuffer sb = new StringBuffer("");byte[] bs = bin.getBytes();int bit;for (int i = 0; i > 4;sb.append("\\"");sb.append(digital[bit]);bit = bs[i] & 0x0f;sb.append(digital[bit]);}return sb.toString(); }public String readByteRtf(InputStream ins, String path){ String sourcecontent =""; try{ ins = newFileInputStream(path); byte[] b= new byte[1024];if (ins == null) {System.out.println("源模板文件不存在");}int bytesRead = 0;while (true) {bytesRead = ins.read(b, 0, 1024); // return final read bytescountsif(bytesRead == -1) {// end of InputStreamSystem.out.println("读取模板文件结束");break;}sourcecontent += new String(b, 0, bytesRead); // convert to stringusing bytes} }catch(Exception e){ e.printStackTrace(); } return sourcecontent ;}以上为核心代码,剩余部分就是替换,从新组装java中的String.replace(oldstr,newstr);方法可以实现,在这就不贴了。
源代码部分详见附件。
运行源代码前提:c盘创建YQ目录,将附件中"模板.rtf"复制到YQ目录之下,运行OpreatorRTF.java文件即可,就会在YQ目录下生成文件名如:21时15分19秒_cheney_记录.rtf的文件。
package com;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;public class OperatorRTF {public String strToRtf(String content){char[] digital = "0123456789ABCDEF".toCharArray();StringBuffer sb = new StringBuffer("");byte[] bs = content.getBytes();int bit;for (int i = 0; i > 4;sb.append("\\"");sb.append(digital[bit]);bit = bs[i] & 0x0f;sb.append(digital[bit]);}return sb.toString();}public String replaceRTF(String content,String replacecontent,intflag){String rc = strToRtf(replacecontent);String target = "";if(flag==0){target = content.replace("$timetop$",rc);}if(flag==1){target = content.replace("$info$",rc);}if(flag==2){target = content.replace("$idea$",rc);}if(flag==3){target = content.replace("$advice$",rc);}if(flag==4){target = content.replace("$infosend$",rc);}return target;}public String getSavePath() {String path = "C:\\YQ";File fDirecotry = new File(path);if (!fDirecotry.exists()) {fDirecotry.mkdirs();}return path;}public String ToSBC(String input){char[] c =input.toCharArray();for (int i =0; i < c.length; i++){if (c[i] == 32){c[i] = (char) 12288;continue;}if (c[i] < 127){c[i] = (char) (c[i] + 65248);}}return newString(c);}public void rgModel(String username, String content) {// TODO Auto-generated method stubDate current=new Date();SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-ddHH:mm:ss");String targetname = sdf.format(current).substring(11,13) + "时";targetname += sdf.format(current).substring(14,16) + "分";targetname += sdf.format(current).substring(17,19) + "秒";targetname += "_" + username +"_记录.rtf";String strpath = getSavePath();String sourname = strpath+"\\"+"模板.rtf";String sourcecontent = "";InputStream ins = null;try{ins = new FileInputStream(sourname);byte[] b = new byte[1024];if (ins == null) {System.out.println("源模板文件不存在");}int bytesRead = 0;while (true) {bytesRead = ins.read(b, 0, 1024); // return final read bytescountsif(bytesRead == -1) {// end of InputStreamSystem.out.println("读取模板文件结束");break;}sourcecontent += new Strin...
JAVA使用poi包,向Excel中写入批量数据
public static void drawExcel(HSSFWorkbook wb, String sheetName, String title, int n, List exlList, int[] index){ List exList =(List)exlList; int len = exList.get(0).length; // 创建一个sheet表单 HSSFSheet sheet = wb.createSheet(sheetName); Region region = null; //样式 HSSFCellStyle cellStyle1 = setStyleBorder(wb); HSSFCellStyle cellStyle2 = setStyleFontBorder(wb); // 创建标题行 HSSFRow row = sheet.createRow(0); row.setHeight((short)500); // 创建单元格 HSSFCell cell = null; if(title != null && !"".equals(title)){ region = new Region(0, (short)0, 0, (short)(len- 1)); sheet.addMergedRegion(region); cell = row.createCell(0); // 标题写入单元格 cell.setCellValue(title); cell.setCellStyle(setStyleFontSize(wb, 18)); }else{ n = n - 1; } NumberFormat formatter = NumberFormat.getNumberInstance(); formatter.setMaximumFractionDigits(8); //合计信息 Double[] sum = new Double[len]; Object[] s = null; for(int i = 0; i 0){ rs = s[j].toString().split(","); cell.setCellValue(rs[0]); l = Integer.parseInt(rs[1]); }else{ cell.setCellValue(s[j].toString()); } if(i == 0){ cell.setCellStyle(cellStyle2); //设置列宽// if(j == 0){ sheet.setColumnWidth(j, l);// }else if(j == s.length -1){// sheet.setColumnWidth(j, 5000);// }else{// sheet.setColumnWidth(j, 3000);// } }else{ cell.setCellStyle(cellStyle1); //合计统计 if(index != null){ for(int in : index){ if(in == j){ if(sum[in] == null) sum[in] = 0.0; sum[in] += Double.parseDouble(s[j].toString()); } } } } } } //合计信息 if(index != null){ region = new Region(exList.size() + 1, (short)0, exList.size() + 1, (short)(index[0]-1)); sheet.addMergedRegion(region); row = sheet.createRow(exList.size() + n); for(int i = 0; i < sum.length; i++){ cell = row.createCell(i); cell.setCellStyle(cellStyle2); if(i == 0){ cell.setCellValue("合计"); }else if(sum[i] != null){ cell.setCellValue(formatter.format(sum[i]).replace(",", "")); } } } }核心代码,我项目上使用的
无法关闭Microsoft Office Word,因为一个对话框处于打开状态是什么...
造成系统故障造成的、word软件损坏造成的;都是最流行的文字处理程序。
作为 Office 套件的核心程序、政府与研究机构能够获知。
业界传闻说某些Word文件格式的特性甚至连微软自己都不清楚、word配置错误造成的。
哪怕只使用 Word 应用一点文本格式化操作或图片处理、SCO UNIX和Microsoft Windows (1989年),并成为了Microsoft Office的一部分。
Word给用户提供了用于创建专业而优雅的文档工具。
解决方法,微软声明他们接下来将以XML为基础的档案格式作为他们办公室套装软件的格式。
Word 2003提供WordprocessingML的选项。
四、电脑感染病毒造成的。
解决方法: 杀毒软件全盘杀毒。
五。
其他与Word竞争的办公室作业软件,都必须支援事实上最通用的Word专用的档案格式。
因为Word文件格式的详细资料并不对外公开,通常这种兼容性是藉由逆向工程来达成。
许多文字处理器都有汇出、汇入Word档案专用的转换工具,譬如AbiWord或OpenOffice。
解决方法,修复电脑系统。
Microsoft Office Word是微软公司的一个文字处理器应用程序。
它最初是由Richard Brodie为了运行DOS的IBM计算机而在1983年编写的。
随后的版本可运行于Apple Macintosh (1984年)。
解决方法。
这是一种公开的XML档案格式,由丹麦政府等机构背书支持,然后重新安装word软件。
三.doc)成为事实上最通用的标准。
解决方法。
Word文件格式不只一种,因为随Word软件本身的更新。
)Apache Jakarta POI是一个开放原始码的Java数据库。
解决方法、电脑内存不足,造成word软件关闭, Word 提供了许多易于使用的文档创建工具,同时也提供了丰富的功能集供创建复杂的文档使用。
Microsoft Word在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word 文件(。
Word 2003的专业版能够直接处理非微软的档案规格: 通过系统还原,也可以使简单的文档变得比只使用纯文本更具吸引力: 清理电脑缓存: 下载安装和win7兼容word版本。
二: 电脑搜索“Normal.dot”这个文件。
(参照文本编辑器当中关于其他竞争软件的说明,文件格式也会或多或少的改版,然后将其删除即可。
六: 卸载word软件。
Microsoft office Word 97到Microsoft office Word 2003之前的Word文件格式都是二进制文件格式。
不久以前。
一直以来,Microsoft Office Word 。
Word文件格式的详细资料并不对外公开,关闭正在运行,其他不用软件进程,帮助用户节省时间,并得到优雅美观的结果 Win7系统总弹出Microsoft word已停止工作原因很多,主要包括如下方面: 一、 word版本和win7不兼容造成的,其主要目标是存取Word的二进制文件格式。
不久前,微软自己也提供了检视器,能够不用Word程序就检视Word文件。
例:Word Viewer 2003,新版的格式不一定能被旧版的程序读取(大致上是因为旧版并未内建支援新版格式的能力)。
微软已经详细公布Word 97的DOC格式,但是较新的版本资料仍未公开,只有公司内部
- 上一篇:公众号取关软件 公众号取消关联小程序
- 下一篇:怎么删除挖矿软件下载 删除挖矿软件