Tag: apache poi

如何在Apache POI中设置Excel默认行高

我在Spring MVC 3.1中使用Apache POI 3.7。 如何在apache POI中设置excel默认行高? 我试过sheet.setDefaultRowHeight((short) 100)和sheet.setDefaultRowHeightInPoints(100) 但是这不起作用。 对这个问题的任何build议? 谢谢。

Apache POI需要很长时间才能生成Excel表单

package efms.bizobj; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Random; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import efms.db.bean.PsatMetricsDrillDown2ActionList; import efms.db.bean.PsatMetricsDrillDown2Bean; import efms.log.EfmsLogger; public class DrillDown2ExcelReport { public void generateHeader1(HSSFWorkbook wb, HSSFSheet sheet, String name,List<PsatMetricsDrillDown2Bean> records) { EfmsLogger.debug("Inside generateHeader1"); HSSFRow row = sheet.createRow(0); HSSFCell cell; int count = 14; row = sheet.createRow(0); […]

当使用POI读取.xlsx文件时,出现错误“Zip File is closed”

public Sheet readExcel() throws Exception{ //File fi=new File(new File(System.getProperty("user.dir"))+"\\src\\testdata2.xls"); File fi=new File("C:\\Users\\admin\\workspace\\HMS\\src\\testdata\\testdata1.xlsx"); Workbook wb = new XSSFWorkbook(fi); Sheet Sheet = wb.getSheetAt(0); int rowCount = Sheet.getLastRowNum()-Sheet.getFirstRowNum(); for (int i = 1; i < rowCount+1; i++) { Row row = Sheet.getRow(i); if(row.getCell(0).toString().length()==0){ System.out.println(row.getCell(1).toString()+"—-"+ row.getCell(2).toString()+"—-"+ row.getCell(3).toString()+"—-"+ row.getCell(4).toString()); } } return Sheet; } 通过运行上面的代码得到像这样的错误…….. 线程“main”中的exceptionjava.lang.IllegalStateException:Zip文件在org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getEntries(ZipFileZipEntrySource.java:45)处closures,位于org.apache.poi.openxml4j.opc.ZipPackage。 getPartsImpl(ZipPackage.java:186)at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:684)at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:254) org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:201)at […]

如何使用poi从Excel表格中检索百分比types值

我正在尝试使用Apache POI读取Excel表格的单元格值。 我的一个表格包含百分比types作为单元格types。 当我使用cell.getNumbericValue()使用POI读取单元格时,它返回double值。 如果单元格包含11.24%,它返回给我0.1124。 我的问题是,我也想从单元格读取%符号,即我想读取单元格中的精确数据为11.24%。 所以,我试着用cell.toString(),即使这样它返回的值与上面相同。 任何人都可以请build议我,如何摆脱这个问题。 在此先感谢南都

使用Apache POI在Excel中创build条形图

我正在尝试使用Apache POI在XLSX电子表格中创build条形图,但是Excel一直说我在尝试打开文件时内容有问题,并删除了图表。 这里是我想要做的完整的代码: public static void createBarChart() { Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("Sheet2"); Row row; Cell cell; row = sheet.createRow(0); row.createCell(0); row.createCell(1).setCellValue("HEADER 1"); row.createCell(2).setCellValue("HEADER 2"); row.createCell(3).setCellValue("HEADER 3"); for (int r = 1; r < 5; r++) { row = sheet.createRow(r); cell = row.createCell(0); cell.setCellValue("Serie " + r); cell = row.createCell(1); cell.setCellValue(123); […]

在浏览器中显示Excel工作表?

我需要在networking浏览器 (不pipe是Firefox,Opera还是IE)中显示新生成的excel (使用Apache POI的表格)。 我已经创build了JSP文件 contentType="application/vnd.ms-excel" 但我没有得到它。 这是我的代码片段: <%@page session="true" contentType="application/vnd.ms-excel" pageEncoding="UTF-8"%> <%@page import="org.apache.poi.ss.usermodel.CellStyle"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.Connection"%> <%@page import="org.apache.poi.ss.usermodel.CreationHelper"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFCell"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFRow"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%> <html> <head> <%! int r=0; HSSFWorkbook book; HSSFSheet sheet; HSSFRow row; CreationHelper createHelper = book.getCreationHelper(); Connection conn; Statement stmt; ResultSet rs; %> <title>Report</title> […]

自动过滤后调用autosize的Apache POI

我一直在寻找一段时间,还没有find解决scheme。 这个问题之前已经被问到过,但是OP没有得到回应,我不想复活一个老的线程,所以决定问一个新的问题。 OP线程在这里 。 我遇到的问题是我有一个电子表格,它是用从数据库中获得的数据创build的,但是有时候单元格内的数据可能会很长,所以想让POI自动化来保存用户不得不这样做,但是因为我在调用autosize之前设置了autofilter,所以没有工作。 我正在使用Apache POI 3.9。 我要么得到它的自动化点,但没有考虑到自动筛选下拉箭头,或者我得到一个空指针exception。 我已经尝试了遍地移动一个for循环,包括在数据写入电子表格的末尾,也在文件输出stream的前面,但是无济于事。 我也尝试使用几种不同的字体,但是这也没有奏效。 希望有人能帮助我。 谢谢

在Excel工作表中使用JAVA永久删除空行Apache POI

我想永久删除那些没有任何types数据的空行! 我这样做是这样的: private void shift(File f){ File F=f; HSSFWorkbook wb = null; HSSFSheet sheet=null; try{ FileInputStream is=new FileInputStream(F); wb= new HSSFWorkbook(is); sheet = wb.getSheetAt(0); int rowIndex = 0; int lastRowNum = sheet.getLastRowNum(); if (rowIndex >= 0 && rowIndex < lastRowNum) { sheet.shiftRows(rowIndex, lastRowNum, 500); } FileOutputStream fileOut = new FileOutputStream("C:/juni.xls"); wb.write(fileOut); fileOut.close(); } catch(Exception e){ […]

通过SXSSF(Apache POI)使用自定义颜色

我试图写一个巨大的Excel文件,我的要求允许我写行和忘记,所以我使用SXSSF ,它允许保持在内存中只有less数几行,并rest所有写入文件。 这有助于克服大文件的内存exception。 但我也需要使用sxssf工作簿将样式设置为单元格。 我无法find在SXSSF中定义和使用自定义颜色的方法(就像在XSSF中,我们可以直接定义自定义颜色,而在HSSF中,我们可以使用自定义颜色replace调色板中的条目) 我无法从SXSSF工作簿中find调色板。 由于构造函数受保护,我无法创build新的HSSF调色板 。 现在看起来可行的唯一方法是以某种方式从所有预定义的颜色列表中find一个类似的颜色并使用它,而不是原始颜色(但是需要有一个rgb颜色匹配algorithm,这将是另一个任务) 有人可以提出一个解决方法(或者可能build议一个原始RGB颜色匹配algorithm)

Apache poi Excel:根据列的整数索引创build公式

说我的列号是26,当我创build一个公式时,我的公式应该看起来像:SUM(AA1:AA3)。 但是我怎样把26翻译成AA呢? 或者说27到AB? 有没有办法为Apache POI使用列索引作为一个整数,并将其转换成它的字母表示?