`

POI 操作 wrod 和 excel 文档

    博客分类:
  • java
阅读更多
java 利用POI 读写 word excel ,还算方便

1. 遇到 java.io.IOException: Unable to read entire header; 0 bytes read; expected 512 bytes

主要是打开多个文档读写,就会出问题。 打开文档需要用单例模式
在一个线程里开了一个 HSSFWorkbok(excel workbook obj),在另外一个函数中又开了一个,就会出现这个问题

还有一个大坑就是: 如果打开两个excel 文件, 虽然这是两个file, 但是依然会出现这个问题
我的测试函数是这样:
    /**
     * This function confirms , CANNOT open two HSSFWorkbook in same time, even opent two different file
     * @param filepath1
     * @param filepath2
     */
    public void openTwoXlsSametime(String filepath1,String filepath2){
	try {
	    FileInputStream fin1=new FileInputStream(new File(filepath1));
	    FileInputStream fin2=new FileInputStream(new File(filepath2));
	    HSSFWorkbook wk1 = new HSSFWorkbook(fin1);
	    HSSFWorkbook wk2 = new HSSFWorkbook(fin2);
	    wk1.getSheet("Workflow");
	    wk2.getSheet("Workflow");
	} catch (FileNotFoundException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	} catch (IOException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}
	
    }


你会看到异常抛出,其实什么都没做,就是打开两个excel

2. 另外, 我还得到一个经验

就是 new FileOutputStream(new File()),这个文件如果存在,就会被清为0, 难道我应该以append 方式打开  new FileOutputStream(new File(),true) ? 确实这样,如果要即读又写,必须FileOutputStream 作为append 模式

我遇到的问题是,一个excel 既读又写,读出一个sheet 表内容,作处理后写入另一个sheet 中,这个也不行,不知道如何做
于是我只好处理excel 后, 写入csv 文本文件,然后手工拷贝到sheet 表中

3. POI write XSSFWorkbook, 写excel 日期字符串,用setCellValue(stringvalue), 打开excel 总是发现有个 leading aspotrophe ' 在里面,折腾好久,后来终于找到解决方案,
XSSFworkbook 写字符串类型数据,应该用下面方法:
XSSFCellStyle textFormatStyle = (XSSFCellStyle) workbook.createCellStyle();
               textFormatStyle.setDataFormat((short)BuiltinFormats.getBuiltinFormat("text"));
XSSFCell cell = (XSSFCell) r.createCell(colIndix);
cell.setCellStyle(textFormatStyle);

参考: http://apache-poi.1045710.n5.nabble.com/Adding-dates-as-text-with-a-leading-apostrophe-td3283872.html

4. POI读写 excel ,从一个excel 中 读, 然后再写入另一个excel 中,
如何把读excel 中相应cell style ,正确的写入 excel 中?
写excel 的 cellStyle 不能简单的 new Style, 会报错。错误exception 记不得了,网上可以查到
必须读取,克隆,然后使用
origStyle = titleRow.getCell(ri).getCellStyle();
textFormatStyle = (XSSFCellStyle) wWorkbook.createCellStyle();
textFormatStyle.cloneStyleFrom(origStyle);
XSSFCell nCell = (XSSFCell) row0.createCell(ri);
nCell.setCellStyle(textFormatStyle);

5. 之前部署在Jekins 上运行,总是报错
org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
有网页说, 是sellCellValue(value) 写入了一个空值,引起的, 检查了空值还是有;
有网页说, 是包冲突引起的, 有一种原因是引用了旧的poi, 另外还有一个是说xmlbean 冲突。
而我 把 xmlbean 2.3 替换为 2.6 之后,该错误消失了

6. 之前运行了很多次都没有问题,也没有改代码,忽然一天运行,就出现下面Exception:
java.lang.IllegalStateException: The maximum number of Cell Styles was exceeded. You can define up to 64000 style in a .xlsx Workbook
参考: https://github.com/MetadataConsulting/spreadsheet-builder/issues/8
检查代码,发现我在循环中重复 myStyle= (XSSFCellStyle) wWorkbook.createCellStyle();
把 mystyle 定义挪到for 之外, 只是重复赋值。依然不对
干脆只赋值一次,重复使用。
分享到:
评论

相关推荐

    POI实现word和excel在线预览

    至于压缩包中的"test02"文件,它可能是用来测试工具类功能的一个示例文件,可能包含了多种格式的Word和Excel文档,以便开发者验证预览功能是否正常工作。 总之,"POI实现word和excel在线预览"工具类是Java开发中一...

    android中poi生成word文档和excel文档

    总的来说,使用Apache POI在Android中生成Word和Excel文档涉及了多个步骤,包括数据读取、文件操作、文档结构构建以及格式化。这个过程需要对XML、Java I/O、Android文件系统权限管理和POI API有深入理解。开发者...

    poi操作word和excel实例

    ### POI操作Word和Excel实例详解 #### 一、POI简介 Apache POI是一个流行的Java库,用于处理Microsoft Office格式文件,特别是Excel (.xls, .xlsx) 和 Word (.doc, .docx) 文件。它提供了强大的API来读取、创建、...

    poi实现word、excel在线预览

    java实现word、excel在线预览。版本2003和2007都支持在线预览,项目需要导入一些poi相关的jar,jar之间的版本有要求。在我的资源列表,有相关的jar包可以下载。

    PoiWord和Excel 文件操作的插件

    POI是java对Word和Excel 文件操作的插件,这文档主要是教我们怎么使用POI插件对Word和Excel文件进行读写操作

    POI合并多个相同的Excel或者合并Word文件

    在IT行业中,尤其是在数据处理和文档管理领域,有时我们需要对大量相同格式的文件进行整合,例如Excel表格或Word文档。在这种情况下,Java的POI库提供了强大的功能,可以帮助我们实现这些需求。POI是Apache软件基金...

    POI修改word、excel、pdf、ppt文件属性如作者以及将其转成html

    以下是如何使用POI修改Word、Excel和PowerPoint文件的作者属性: 1. **修改Word文件属性**: - 使用`XWPFDocument`类加载`.docx`文件。 - 访问`XWPFDocument.getDocumentProperties()`获取`...

    poi导出word和excel,附带jar包

    在本例中,"poi导出word和excel"是一个使用Java POI组件实现的示例,通过main方法演示了如何操作Excel和Word文档的生成。 首先,让我们详细了解一下Java POI库在Excel导出中的应用。在Excel处理中,POI提供了一个...

    基于poi实现word/excel转换为HTML(且兼容.doc.docx.xls.xlsx)

    Apache POI 是一个流行的开源库,专为处理Microsoft Office格式的文件,如Word(.doc/.docx)和Excel(.xls/.xlsx)。本教程将深入探讨如何使用Apache POI库来实现这些文件向HTML的转换,以实现跨平台和浏览器的兼容...

    java Apache poi 对word doc文件进行读写操作

    Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 格式,如 Word、Excel 和 PowerPoint。在处理 Word .doc 文件时,POI 提供了一个名为 HWPF(Horizontally Written Property Set Files)的模块。这个...

    POI操作Word中插入文本和图片

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在本文中,我们将深入探讨如何使用Apache POI在Word文档中插入文本和图片,这对于创建动态报告模板尤其有用。 ...

    poi 导出 word 导出excel

    Apache POI 是一个开源的Java库,用于读取和写入Microsoft Office格式的文件,包括Word(.doc/.docx)和Excel(.xls/.xlsx)。这个项目是开发者处理Office文档的强大工具,尤其在需要从Java应用程序自动化创建、编辑...

    poi操作word文档

    Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Word、Excel 和 PowerPoint。对于 Word 文档(.docx),Apache POI 提供了 XWPF 模块来实现对 .docx 文件的读写操作。本文将详细介绍...

    poi操作word模板

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在"poi操作word模板"的场景中,我们主要关注如何使用Apache POI库来自动化填充Word文档模板,这在批量生成报告...

    Apache中POI操作word所需的相关jar包

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在Java环境中,如果你需要对Word文档进行读写操作,Apache POI提供了一个名为XWPFDocument的类,使得这项任务...

    java poi操作word模版文件生成表单和修改

    在提供的压缩包文件中,"改进wordDemo-master.zip"和"java poi template .zip"可能包含了示例代码和模板文件,用于演示如何使用Java POI操作Word模板生成表单和进行修改。你可以解压并研究这些文件,以更好地理解和...

    POI操作WORD 官方测试案例 DEMO.zip

    JAVA操作MS office 工具 POI操作WORD 官方测试案例 DEMO(含jar包,IDEA) 可直接运行测试。 ------------------------------------------------------ 1 什么是Apache POI 全称Apache POI,使用Java编写的免费...

    Java通过POI读取Excel遍历数据,批量生成word文档

    Apache POI是一个开源项目,它允许Java开发者处理Microsoft Office格式的文件,如Excel(.xlsx或.xls)和Word(.docx)。 首先,我们需要导入Apache POI的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下...

    利用POI读取excel写入到word

    在IT行业中,Apache POI是一个广泛使用的开源库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。本篇文章将详细讲解如何利用Apache POI库来读取Excel数据并将其写入到Word文档中。 首先,...

    poi3.8 doc,excel转html

    Apache POI是一个流行的Java库,专门用于读取、写入和操作Microsoft Office格式的文件,包括Word(.doc)和Excel(.xls)。 描述中提到,经过一番努力,作者已经完成了这个转换过程,并愿意分享成果。不过,需要...

Global site tag (gtag.js) - Google Analytics