Tag: apache poi

Apache Poi 3.13找不到类来打开XLSX文件

我正在使用Apache POI来读取和写入Java的Excels文件,但是我无法在源文件中findWorkbookFactory或XSSFWorkbook来读取xlsx文件。 pom.xml : <poi.version>3.13</poi.version> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency> 我无法find可能导致这种行为的Apache poi更新日志中的任何信息。 编辑 :在这里我的实现(只是一个简单的方法) public static HSSFSheet getXLSSheet(String fileName, int sheetIndex) throws IOException { InputStream inputStream = new FileInputStream(fileName); HSSFWorkbook workbook = new HSSFWorkbook(inputStream); return workbook.getSheetAt(sheetIndex); } 我试图打开一个XLSX文件,但因为我找不到其他两个类(WorkbookFactory或XSSFWorkbook),我期望有这样的错误: org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. […]

Apache POI输出问题

我有一个Apache POI的问题。 我在处理完相关数据后试图返回一个文件。 当我将文件返回到浏览器(包括IE8 / 9,Firefox)时,浏览器会返回一个垃圾字符。 这只发生在Excel文件很大并且进程已经运行了2分钟以上的情况下。 否则,它返回一个文件,我可以在Excel中打开。 任何帮助表示赞赏,谢谢。 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".xls\""); OutputStream out = null; try { out = new BufferedOutputStream(response.getOutputStream()); wb.write(out); out.flush(); } catch (IOException ex) { ex.printStackTrace(); }

使用Apache POI以xlsx格式编写文件

尝试.xlsx file using Apache POI编写.xlsx file using Apache POI时出现以下exception NoClassDefFoundError: javax/xml/stream/XMLStreamException 这是代码片段: – XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(); Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue(100); FileOutputStream fileOut = new FileOutputStream("D:\\workspace\\April\\Excel Test\\workbook.xlsx"); wb.write(fileOut); fileOut.close(); 我有以下的jar子 dom4j的-1.6.1 POI-OOXML-3.5-FINAL POI-3.6-20091214 XMLBeans的-2.3.0 OOXML-架构 – 1.0 请让我知道我在这里做错了什么,或者我失去了一些东西。

使用Apache POI从excel文件中获取图像及其位置

是否可以使用Apache POI从xls电子表格中提取图像的信息? 在我的一个项目中,我需要从.xls文件中读取一些图像。 我可以一起阅读所有的图像,但我怎样才能获得图像的位置(如列和行的数字或坐标)? 否则,我可以获取图像位置,但是我无法知道关于在find的位置上的特定图像的信息,如图片名称或扩展名或其他。 我怎样才能得到图像和位置呢? 在这里阅读所有的图片…在这里得到的图像职位…

使用apache poi将HSSF(excel)embedded到HSLF(ppt)中

我想embedded到使用Apache poi的演示文稿(PPT)的Excel表。 我们应该怎么做? 如果有人知道,请帮助我。

重新定义命名的Excel范围,然后使用Apache POI保存

使用Apache POI,我可以find一个命名的范围: XSSFName[] ranges = new XSSFName[workbook.getNumberOfNames()]; for (int i = 0; i < _wb.getNumberOfNames(); i++) ranges[i] = workbook.getNameAt(i); 有了这个,我可以细胞一个AreaReference: AreaReference area = new AreaReference(ranges[0].getRefersToFormula()); 最后我可以得到这个范围内的所有细胞: CellReference[] cells = area.getAllReferencedCells(); 这一切工作得很好。 伯特我有一个用例,我必须重新定义范围覆盖的区域。 有没有办法做到这一点? 我注意到range.getRefersToFormula()方法返回一个string,就像MySheet!$A$1:$B$8 。 有一个range.setRefersToFormula(String formula) ,但我必须相信有一种方法,而不是诉诸写我自己的Excel范围公式分析器。 有没有办法生成一个设置的Cell引用更安全的types的区域引用? 我真的必须生成一个String来表示新的范围? 我想会有API的地方来帮助我,但我似乎无法find它。 更新 我发现了一些API,但似乎没有工作,至less它不能正确保存。 这是我做的。 AreaReference newArea = new AreaReference(firstCell, lastCell); ranges[0].setRefersToFormula(newArea.formatAsString()) 它似乎正确地设置公式,但是当我将工作簿stream出到磁盘,范围是完全错误的。

将图片添加到Excel单元格时,Apache POI-HSSF扭曲图像大小

我使用Apache POI-HSSF将图片添加到单元格中。 图像是120×100,但无论我做什么和如何调整它,Excel电子表格总是显示它跨越多行,并扭曲它的高度比宽度高得多。 我如何保持原来的大小? 我的代码: InputStream is = new FileInputStream(getImageURL()); byte[] bytes = IOUtils.toByteArray(is); int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG); is.close(); //add a picture shape CreationHelper helper = wb.getCreationHelper(); ClientAnchor anchor = helper.createClientAnchor(); // Create the drawing patriarch. This is the top level container for all shapes. Drawing drawing = sheet1.createDrawingPatriarch(); //set top-left corner of the […]

在Java中渲染Excel表格报告的最佳实践是什么?

我有一个需要生成一个Excel表格报告,看起来像下面的模板 – 我知道这可以使用像JExcelApi和Apache POI库来完成。 不过,我想知道是否有办法通过编写类似于编写用于发送电子邮件的Apache Velocity模板的模板来实现此目的。 如果有一个标准的,良好的实践方法来产生这样的报告是什么?

如何使Excel单元格为强制性?

我试图使一些Excel单元格强制性,以便消息可以显示,如果他们留空的用户。 Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Data Validation"); DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper(); DataValidationConstraint lengthConstraint = dataValidationHelper.createTextLengthConstraint( DataValidationConstraint.OperatorType.BETWEEN, "2", "45"); CellRangeAddressList cellList = new CellRangeAddressList(0, 0, 1, 1); DataValidation validation = dataValidationHelper.createValidation(lengthConstraint, cellList); validation.setErrorStyle(ErrorStyle.STOP); validation.createErrorBox("Error", "The length must be between 2 and 45."); validation.setEmptyCellAllowed(false); if (validation instanceof XSSFDataValidation) { validation.setSuppressDropDownArrow(false); validation.setShowErrorBox(true); } else […]

如何将rich:dataTable导出为ex​​cel

我想将<rich:dataTable>或<rich:extendedDataTable>的内容导出为ex​​cel。 我已经看到PrimeFaces有“出口商function” http://www.primefaces.org/showcase/ui/exporter.jsf 我想只能用PrimeFaces做类似的事情,但是用richFaces(版本3.3.3)…(我想在将来的某个时候迁移到RichFaces 4,但是我坚持3.3 .3现在) 我读过,有可能build立自己的使用http://poi.apache.org/,但我不知道从哪里开始实施这样的事情… 任何关于如何最好地预制所需的出口和例子的想法将不胜感激!