Tag: apache poi

Java POI中的InvalidFormatException

这是我得到的exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13] 我试图打开的文件是一个.xls文件,我寻找可能的解决scheme,我发现这个和这个 ,但我已经正确地做这个,所以这不是问题。 我的代码: InputStream file = new FileInputStream(new File(path)); org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(file); org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(sheetNumber); sheetNumber是一个int(在我的软件中它总是0),path是正确的,在发布之前我testing了这两次,以确保我没有失败。 抛出exception的行是: org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(file); (如果你想了解更多关于代码的细节,可以在这里find全class) 有谁知道我可以在哪里失败? 谢谢你们。

使用Apache POI及其名称获取Excel公式的内容

问题是我如何才能通过名字获得一个公式的内容。 在Excel中,您可以使用公式名称对表进行分组。 我想用Apache POI来获取这样一个名为table的公式的内容。 所以即使表扩展,我也总是得到最新的数据。 因为名字不会改变。 我做了一些编码,但到目前为止,我只能获得一张表的所有内容,而不是公式名的表。 我的代码在下面,谢谢。 package getTablesPOI; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; public class readExcel { // Creates a new instance of POIExcelReader public readExcel() { } /** * The main […]

而将Excel转换为.csv文件,我不能够转换date,并将其保存在CSV文件?

我正在使用Apache POI 3.6,我想从Excel中读取数据,并将Excel数据转换为.CVS文件。 我的Excel数据将以这种格式 第一列将是:date(8/6/2009) 第二栏将是:时间(上午12:00:01) 第三列将是:值1(30) 第四列将是:值2(400.99)。 我需要以这种格式(8-6-2009)转换这些数据,并将其存储在CVS文件中。错误:我可以将数据存储在csv文件中,但不能将其中的date和时间转换。 它在date列中获取41426一些值,在时间列我得到这个3456.0。 我没有得到如何转换这上面:请任何人帮我出.. 🙁 我的代码在这里: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Excel { static void xlsx(File inputFile, File outputFile) { // For storing data into CSV files StringBuffer data = new StringBuffer(); try […]

我们可以使用java更新密码保护excel表的行和列吗?

NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("C://Users//RK5026051//Downloads//500_Lanes.xls")); EncryptionInfo info = new EncryptionInfo(fs); Decryptor d = Decryptor.getInstance(info); if (d.verifyPassword("manh.com")) { HSSFWorkbook wb = new HSSFWorkbook(d.getDataStream(fs)); } else { System.out.println("wrong password"); } // TODO Auto-generated method stub } 错误 – Exception in thread "main" java.io.FileNotFoundException: no such entry: "EncryptionInfo", had: [_VBA_PROJECT_CUR, SummaryInformation, DocumentSummaryInformation, Workbook] at org.apache.poi.poifs.filesystem.DirectoryNode.getEntry(DirectoryNode.java:370) at org.apache.poi.poifs.filesystem.DirectoryNode.createDocumentInputStream(DirectoryNode.java:177) […]

阅读大型Excel文件.xlsx

我正在使用库 org.apache.poi XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); 我尝试着 org.xml.sax 库,但无法将其转换为工作簿 注意:最后结果我希望返回XSSFWorkbook 上面的代码将会出现内存不足,任何帮助将提前感谢ThankQ

如何将XSSF颜色转换为Java.awt.color格式。 因为XSSF颜色无法比较

我明确地发布了代码。 我想在excel中获得单元格的颜色,我发布了我的excel文件,并且只有两种颜色,绿色和黄色。 如果我使用XSSFColor,打印输出是XSSFColor @ 8b21b8fa和XSSFColor @ dfcdb1。 因此,我无法比较它是绿色还是黄色。 如果是黄色,我希望打印出1;如果是绿色,我希望打印出0。 谢谢你的帮助!!! for(Row row : sheet) { for(Cell cell : row) { switch(formulaEvaluator.evaluateInCell(cell).getCellType()) { case Cell.CELL_TYPE_BLANK: Color cellColor= cell.getCellStyle().getFillForegroundColorColor(); if(cellColor==Color.GREEN) { System.out.print(0+","); } else if(cellColor==Color.YELLOW) { System.out.print(1+","); } } } System.out.println(); } 这是我的excel文件显示一个madarin字符

如何使用Apache POI输出到特定的列和工作表?

这个周末我正在教自己的Apache POI。 我最近的任务是取一个具有数值和空白单元格的列,并将值添加到空白单元格。 我想我几乎用switch语句和setCellValues完成了这么多工作,但似乎无法将内容输出回工作簿上的特定工作表和列。 下面是我的下面。 数据被拉入方法很好。 Random randomNum = new Random(); double randomD = randomNum .nextDouble(); for (Row row : sheet2) { for (Cell cell : row) { switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: System.out.println(cell.getNumericCellValue()); break; case Cell.CELL_TYPE_BLANK: cell.setCellValue(randomD); FileOutputStream fileOut = new FileOutputStream("C:/Users/testtest/Desktop/Test/ProductTests.xls"); wb.write(fileOut); fileOut.close(); System.out.println(cell.getNumericCellValue()); break; default: System.out.println(); } } }

如何使用Apache POI优化Excel工作簿

对于我正在开发的一个业余爱好项目,我想使用Apache POI来更新,评估和检索Excel文件中的结果。 通常情况下,只有less数几个单元格与此相关,其余单元格占用大量空间,导致打开文件时出现性能问题。 假设我有以下结构 A1含有SUMPRODUCT(B2:B10; C2:C10) 在“D”,“E”和“F”列有一些随机数字的“首先” 在多个单元中使用一些随机数据“第二个”表 现在,我想能够更新B2:B10和C2:C10并获取A1的更新值。 我不在乎其他数据。 要优化文件的大小,我想将所有其他单元格更新为null并保存该文件。 例如,在上面的例子中:从表“第一个”删除列D,E和F +删除表“第二个”。 一种方法是实现类似下面的伪代码(假设没有循环引用) Take set of cells I want to evaluate (eg, A1) as "relevantCells" For each cell in "relevantCells" Retrive all cells in the formulae and add to "relevantCells" For each cell in workbook Check if cell is in "relevantCells" if(yes) continue else […]

Apache POI&SXSSF:行数始终为0

我使用SXSSFWorkbook和SXSSFSheet对象。 我能够成功写入Excel文件: FileOutputStream fos = new FileOutputStream(fileName); wb.write(fos); fos.close(); wb.dispose(); 写入文件后,我正在加载/读取它的进一步更改。 这是问题,当我尝试获取getLastRowNum()的行数时,我总是得到0作为结果。 这是一段代码: SXSSFWorkbook wb = null; try { wb = new SXSSFWorkbook(new XSSFWorkbook(new FileInputStream(fileName))); } catch (FileNotFoundException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace();} SXSSFSheet sheet = wb.getSheet(sheetName); System.out.println(sheet.getLastRowNum()); 结果是0! 我尝试使用迭代器创build自己的方法,但是这给了我相同的结果。 我没有任何错误消息,如果检查工作表的名称(sheet.getSheetName()),它将返回正确的名称,但不是正确的行数,尽pipeExcel文件有很多简单的行。

Excel Java – 将一行单元格值传递给ArraList

我想知道如何将整个行的单元格值存储到ArrayList中 防爆。 Table_Alphabet Col1 | Col2 | Col3 | COL4 阿尔法| Beta | 伽玛| 三angular洲 mono | poly | tera | EXA 所以,在这里我想取第一行{Alpha,Beta,Gamma,Delta}并将整行存储到ArrayList中。 我试图使用ArrayList的这个单元格值(使用Apache POI!) ArrayList<String> level1 = new ArrayList<String>(); 然后将该ArrayList存储到可以包含实际arrayList的parent_ArrayList ArrayList<ArrayList<String>> parent_list = new ArrayList<ArrayList<String>>(); 但我没有通过这个。 for(int i=0;i<noOfRows;i++){ Row row = sheet.getRow(i); for(int j=0; j<lastCell;j++){ Cell cell = row.getCell(j); switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: […]