Tag: apache poi

使用Apache POI更新MSWord文档

我正在尝试使用Apache POI更新Microsoft Word文档。 msword文档是一个模板,其中包含“$ {place.holder}”forms的多个占位符,我需要做的就是用特定值替换持有者。 到目前为止我得到的是 private void start() throws FileNotFoundException, IOException { POIFSFileSystem fsfilesystem = null; HWPFDocument hwpfdoc = null; InputStream resourceAsStream = getClass().getResourceAsStream(“/path/to/document/templates/RMA FORM.doc”); try { fsfilesystem = new POIFSFileSystem(resourceAsStream ); hwpfdoc = new HWPFDocument(fsfilesystem); Range range = hwpfdoc.getRange(); range.replaceText(“${rma.number}”,”08739″); range.replaceText(“${customer.name}”, “Roger Swann”); FileOutputStream fos = new FileOutputStream(new File(“C:\\temp\\updatedTemplate.doc”)); hwpfdoc.write(fos); fos.flush(); fos.close(); } […]

是否可以使用Apache POI解析MS Word并将其转换为XML?

是否可以使用Apache POI将MS Word转换为XML文件? 如果是的话,你能指点我做任何教程吗?

使用MessageDigest SHA-256的POI XSSF / XLSX散列不确定性

使用MessageDigest SHA-256实现获得POI XLSX格式的确定性哈希值似乎存在问题,即使对于空的ByteArray流也是如此。 这种情况在数百次甚至数千次迭代后随机发生。 用于重现问题的相关代码段: // TestNG FileTest: @Test(enabled = true) // indeterminism at random iterations, such as 400 or 1290 public void emptyXLSXTest() throws IOException, NoSuchAlgorithmException { final Hasher hasher = new HasherImpl(); boolean differentSHA256Hash = false; for (int i = 0; i < 10000; i++) { final ByteArrayOutputStream excelAdHoc1 = BusinessPlanInMemory.getEmptyExcel("xlsx"); final ByteArrayOutputStream […]

Apache POI发生了非法reflection访问操作

我正在使用Apache POI来处理excel文件,从Java 9开始我收到此消息,根据这篇文章JDK9:发生了非法的reflection访问操作。 org.python.core.PySystemState我们应该等待开发人员解决问题,但是我应该在新的生产版本中保留它吗? 如果我跳过警告,我认为这应该不是问题。 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.poi.util.DocumentHelper (file:/T:/Workspace/Java/Sections%20Manager/libs/poi/poi-ooxml-3.17.jar) to method com.sun.org.apache.xerces.internal.util.SecurityManager.setEntityExpansionLimit(int) WARNING: Please consider reporting this to the maintainers of org.apache.poi.util.DocumentHelper WARNING: Use –illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a […]

在java中将docx转换为pdf

我试图将包含表格和图像的docx文件转换为pdf格式文件。 我一直在寻找,但没有得到适当的解决方案,要求提供正确和正确的解决方案: 在这里我尝试过: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.poi.xwpf.converter.pdf.PdfConverter; import org.apache.poi.xwpf.converter.pdf.PdfOptions; import org.apache.poi.xwpf.usermodel.XWPFDocument; public class TestCon { public static void main(String[] args) { TestCon cwoWord = new TestCon(); System.out.println(“Start”); cwoWord.ConvertToPDF(“D:\\Test.docx”, “D:\\Test1.pdf”); } public void ConvertToPDF(String docPath, String pdfPath) { try { InputStream doc = new […]

使用Apache POI删除Excel工作表

我必须从Excel文件中删除一张表。 这是我的代码片段: FileInputStream fileStream = new FileInputStream(destFile); POIFSFileSystem fsPoi = new POIFSFileSystem(fileStream); HSSFWorkbook workbook = new HSSFWorkbook(fsPoi); int index = 0; HSSFSheet sheet = workbook.getSheet(“Setup”); if(sheet != null) { index = workbook.getSheetIndex(sheet); workbook.removeSheetAt(index); } return destFile; 在此之后,我得到了完全相同的工作簿,而没有删除工作表 “设置” 帮我解决这个问题。 任何帮助,将不胜感激

使用Apache POI从java中读取和写入xls和xlsx excel文件

我正在编写一个程序,需要从excel文件中读取和写入,而不管格式(xls或xlsx)。 我知道Apache POI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道如何实现我在这里尝试做的事情。 (也欢迎使用POI以外的API的想法)。

在POI XSSF工作簿中为合并区域添加边框

我正在使用apache poi 3.7,我需要将边框放到一系列单元格或合并区域。 当工作表和工作簿类型为XSSF时,如何将边框应用于合并区域。 在HSSF类型中,我使用RegionUtil- / HSSFRegionutil,但是如果在XSSF类型中使用第一个对象(Regionutil),则它不起作用并将黑色背景颜色放入单元格范围。 Regionutil通常使用CellRangeAddress,我找不到有关此问题的信息。 我不知道CellRangeAddres是否会导致这种情况。

将POI工作簿流式传输到servlet输出流

我在我的Web服务器上构建了一个非常大的POI工作簿。 将整个工作簿保留在内存中,将无法扩展多个并发请求。 有没有办法可以逐步将工作簿写入servlet输出流。 这应该减少响应时间,并使进程内存有效。

Apache POI性能

我遇到Apache POI的性能问题。 我已经阅读了FAQ,它指的是性能测试。 我已经通过注销和4gb堆运行此测试,我无法让测试运行得超过22秒。 这是我正在运行的测试: http : //svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/SSPerformanceTest.java 常见问题解答说,如果我不能让这个测试在3秒内运行,有50,000行和50列“问题在于您的环境”。 我已经阅读了围绕网络的其他评论,指的是禁用poi日志记录并增加堆大小,但似乎没有任何帮助。 我还可以检查什么来修复我的环境? 机器规格(个人台式机): CPU:Intel i7 8核 内存:16GB 操作系统:Windows 7 64位 JDK:1.8.0_66 POI:3.13 JVM参数:-Xmx4g -Xms4g -Dorg.apache.poi.util.POILogger = org.apache.poi.util.NullLogger 命令参数:XSSF 50000 50 0 我还要提一下,我使用的Apache POIjar子来自maven central 我在github上创建了一个测试项目,您可以在其中简单地克隆项目并运行: mvn exec:java 我对我正在使用的参数进行了硬编码,因此您无需在命令行中输入任何特殊内容。 文档说这应该在3秒内运行。 测试项目位于: https : //github.com/mikedehaan/poi-test