Tag: apache poi

Apache-POI在Excel中设置值,但是在我手动按下处理条中的enter之前,另一个单元格的公式无法使用该值

我写了一个程序,它将值写入xlsx文件。 乍一看它似乎应该像它应该的那样工作。 但是在我的xlsx文件中,我在另一个单元格中有一个公式,如果我手动输入值,它应该正常工作,但是如果我的程序设置完全相同的值,它就不会像它应该那样工作。 如果我在程序写入一个值后手动打开文件,并通过按下处理条中的回车按钮确认写入值,它就像它应该的那样工作。 没有抛出exception。 我的程序是在单元格N4和O4中写入。 这是我正在谈论的单元格的Excel公式: = + MAX(; MIN(O4 +(N4> O4); MAX(($ N $ 2> $ö$ 2); $ø$ 2)) – MAX(N4; $ N $ 2))+ MAX(; MIN(O4; MAX (($ N $ 2> $ O $ 2); $ O $ 2)) – MAX(; $ N $ 2)) (N4> O4)+ MAX(; MIN(O4 +(N4> O4); MIN(($ […]

如何使用POI加载大型xls文件时解决java堆空间错误

我正在尝试加载和解析一个11mb的xls文件,我正在使用WorkbookFactory.create(myFile)来加载它。但是我无法加载这个文件并解析它。任何人都可以帮助我解决这个问题我在我的程序中使用的代码, public class LargeExcelManager { private Workbook wb ; public Workbook getWb() { return wb; } public void setWb(Workbook wb) { this.wb = wb; } public LargeExcelManager(String fileName)throws Exception { openWorkbook(fileName); } private void openWorkbook(String fileName)throws Exception { try { System.out.println(“Can be added now”); File myFile = new File(fileName); this.setWb(WorkbookFactory.create(myFile)); // Here i am trying […]

更新Apache POI 4.0后 – 无法识别属性“http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit”

在将Apache POI从3.17更新到4.0.0后,我正在上线: OPCPackage pck = OPCPackage.open(this.getTemplate()); 例外: java.lang.IllegalArgumentException: Property ‘http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit’ is not recognized. at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.setAttribute(DocumentBuilderFactoryImpl.java:144) at __redirected.__DocumentBuilderFactory.setAttribute(__DocumentBuilderFactory.java:125) at org.apache.poi.ooxml.util.DocumentHelper.trySetXercesSecurityManager(DocumentHelper.java:143) at org.apache.poi.ooxml.util.DocumentHelper.(DocumentHelper.java:108) at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:392) at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.(ContentTypeManager.java:104) at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.(ZipContentTypeManager.java:54) at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:258) at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:725) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:275) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:181) 他们说在如何禁用accessExternalDTD和entityExpansionLimit警告与logback我应该排除xerces,但我已经有这个: org.apache.poi poi 4.0.0 org.apache.poi poi-ooxml 4.0.0 xml-apis xml-apis xerces xercesImpl 我的设置: JDK 8 WildFly 14 回到3.17修复了这个问题。

替换.docx(Apache POI,Docx4j或其他)中的文本模板

我想使用正则表达式(java RegEx)在MS Word ( .docx )文档中进行替换: Example: …, с одной стороны, и %SOME_TEXT% именуемое в дальнейшем «Заказчик», в лице %SOME_TEXT% действующего на основании %SOME_TEXT% с другой стороны, заключили настоящий Договор о нижеследующем: … 我试图让文本模板(比如%SOME_TEXT% )使用Apache POI – XWPF并替换文本,但不能保证替换,因为POI分离了runs =>我得到这样的东西( System.out.println(run.getText(0)) ): … , с одной стороны, и % SOME_TEXT % именуемое в дальнейшем «Заказчик», в […]

在LibreOffice中不会自动调整Apache poi Excel行高

我正在使用apache poi来创建一个excel文件。 有些列包含大数据,我想自动调整行高。 请参阅我使用的示例程序。 如果我在Microsoft Excel和Mac OS Numbers应用程序中打开生成的excel文件,那么我可以看到行高自动调整但在LibreOffice (版本5.4.2.2。)中它不会自动调整。 我尝试在( row.setHeightInPoints((short)-1), row.setHeight((short)-1),row.setHeight((short)0) , row.setHeightInPoints((short)0))的解决方案( row.setHeightInPoints((short)-1), row.setHeight((short)-1),row.setHeight((short)0) , row.setHeightInPoints((short)0)) Apache POI中行的大小高度,但它不起作用。 任何帮助都将受到重视 import org.apache.poi.xssf.usermodel.*; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class WriteExcelBasic { public static void main(String[] args) throws IOException { String excelFileName = “/Users/home/Test3.xls”; FileOutputStream fos = new FileOutputStream(excelFileName); XSSFWorkbook wb = new XSSFWorkbook(); […]

我是否可以访问Lotus Notes嵌入式文件而无需实际提取它们?

我正在编写一种以编程方式访问Lotus Notes数据库的方法,以收集有关给定时间段内记录的嵌入附件的信息。 我的目标是查找给定时期内的记录,然后使用Apache-POI获取有关文档大小,字符数等的元数据。 POI部分工作正常,到目前为止,由于这个帮助,我已经能够访问Lotus Notes记录了: lotus notes用Java api按日期搜索 这个答案还告诉我如何下载/复制附件: 如何使用java从.nsf(lotus notes)文件中获取所有附件 从那里我可以使用我的POI代码完成我的工作,最后,只需删除复制的附件。 这种方法基本上有效,但我希望避免复制,保存,然后最后从数据库中删除这些附加文档的副本的开销。 我尝试将EmbeddedObject getSource()方法的结果作为输入传递给我的POI代码,并在POI代码中得到一个FileNotFoundException,期望String生成一个File。 有没有办法获得我可以传递给POI的文件参考,而无需复制和保存附件? 或者,我的意思是,它是否像获取Lotus Notes EmbeddedObject附件的文件(+路径)一样简单,我该怎么做? 我找到了答案并将其发布在下面。

Java如何使用JFileChooser来保存Apache POI创建的excel文件

我想将电子表格文件保存到用户自定义文件夹,人们建议使用JFileChooser ,但实际上我不知道如何实现它。 我这里有我当前的示例代码: import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Example { public static void main(String[] args) throws FileNotFoundException, IOException { XSSFWorkbook workbook; File file = new File(“example.xlsx”); if (file.exists() == false) { workbook = new XSSFWorkbook(); XSSFSheet exampleSheet = workbook.createSheet(“1”); XSSFRow firstRow = […]

如何在apache poi 3.6中创建新行?

我在我们的应用程序中使用Apache POI 3.6和java。 我有第9到30行的数据。 现在,我希望在第25行之后包含新行。执行此操作后,26到30中的旧数据被销毁….我想添加新行而不破坏旧行的数据… 我们可以手动创建新行,只需右击鼠标行第25行,然后选择insert,那么它将包含26行而不删除任何有关旧值的内容。 我是如何使用apache poi和java以编程方式进行的?

如何在Apache POI XWPF文档中创建项目符号列表?

我想用Java在docx word文档中创建项目符号/编号列表。 我正在使用Apache POI 3.10库。 如果我理解正确,步骤将是这样的: 创建编号numbering = doc.createNumbering 将AbstractNum添加到Numbering并获取相应的abstractNumId 使用AbstractNumId numId = numbering.addNum(abstractNumId)添加Num 现在我可以使用para.setNumID(numId)将numId添加到段落中; 但是我陷入了第二步。 如何创建可以添加到编号的AbstractNum对象?

将List实例写入Excel文件 – Apache POI

我有一个管道分隔的String对象List 。 像这样的东西: String1|String2|String3 String4|String5|String6 … 使用Apache POI作为excel库,是否可以迭代整个List,将字符串对象写为excel文件中的每一行? 即:像: for (String inst : ) .write(inst) 即将字符串直接输出到excel作为行条目,而不是用字符串即设置每个单元格值 setting row 1, cell 1 = String1 setting row 1, cell 2 = String2 setting row 1, cell 3 = String3 setting row 2, cell 1 = String4 … 目前,看起来我需要为每个值设置单个单元格。