Tag: apache poi

无法将sheetname与string值进行比较

我需要的是比较或search工作表名称中的string.. 我的意思是,excel文件可能有多个表单,但是只有具有特定string的表单才能表示 只有名为“FORMATO SIVE 04”的纸张将被处理… 我正在debugging像疯了一样,我感到困惑…我的代码是这样的 Workbook eworkbook = WorkbookFactory.create(Archivo); int totalsheet = eworkbook.getNumberOfSheets(); System.out.println("fuerawhile"+totalsheet); sheetName=new String[totalsheet]; //String nombrehoja = eworkbook.getSheetName(0).toString(); //System.out.println(nombrehoja); Sheet sheet = null; while(i<totalsheet){ sheetName[i] = eworkbook.getSheetName(i); System.out.println("Antes IF :" + sheetName[i]); FORMATO = sheetName[i]; if(FORMATO == "FORMATO SIVE 04"){ flag = true; } if(flag){ System.out.println("dentroIF : " + sheetName[i]); sheet = […]

减less从applet中的excel文件读取

我的小程序已经可以读取存储在jar文件中的excel文件,但是从excel文件读取,我必须使用5个其他的jar(dom4j-2.0.0-ALPHA-2,poi-3.9-20121203,poi-ooxml- 3.9-20121203,poi-ooxml-schemas-3.9-20121203,xbean),除了实际的小苹果jar(1.36 mb)之外总共为10.1 mb。 这些花了一段时间来下载,所以我想知道是否有一个更好的优秀阅读库,我可以使用,是较小的。

将SXSSFWorkbook保存为blob的最佳方法是什么?

我正在使用Apache POI SXSSFWorkbook生成一个.xlsx excel电子表格,但不是下载它,我需要将该文件保存到一个blob。 我也需要这个能够扩展,所以如果我有60万以上的logging放入文件,我需要避免内存不足的错误。 这是代码 SXSSFWorkbook workbook = new SXSSFWorkbook(100); addContent(); 通常当输出到一个文件,我做类似的东西 OutputStream output = response.getOutputStream(); workbook.write(output); 但在这种情况下,我不需要它去到一个文件,只是到数据库的blob,除了没有办法将SXSSFWorkbook保存到一个blob。 我可以将工作簿保存到OutputStream中,并尝试将其保存到Blob中,但通常需要使用inputStream。 是否有一个实用程序将outputStream转换为inputStream?

使用Apache POI库检索excel中属性(列)的唯一值列表

我正在阅读一个excel文件,其中包含数百万个数据集logging,用于我的项目工作。 我的问题是,如何填充列(或属性)的每个分类variables可以具有的唯一值列表。 POI库中是否有预定义的函数可以完成这个任务,或者遗漏的唯一选项是遍历每一条logging,然后与已经存在的logging进行比较以确定新的logging。 谢谢。

我得到的公式,而不是细胞内容

我有这个代码: String fname = "C:/Users/slim/Desktop/xlsxFiles/plan.xlsx"; InputStream inp = new FileInputStream(fname); Workbook wb = new XSSFWorkbook(inp); Sheet sheet = wb.getSheetAt(0); for (Row row : sheet) { System.out.println(row.getCell(0)); System.out.println(row.getCell(11)); } 我面对的问题似乎有点奇怪,因为这是我第一次处理POI。 cell 0的内容是一个date,我完全没有问题,但是cell 11的内容应该是一个数字,它返回用于获取内容的公式。 这是一个示例输出: 31-Aug-2013 L3/5 30-Sep-2013 L3*2/5 31-Oct-2013 L3*3/5 30-Nov-2013 L3*4/5 31-Dec-2013 L3 31-Jan-2014 P8 28-Feb-2014 P9 31-Mar-2014 P10 等等… 我需要做的是显示单元格的实际内容,而不是公式。 我确信我错过了一些小事,但作为一个完整的初学者,我无法发现它。

POI无法打开在Excel中打开的工作簿

当我尝试在POI中打开一个.xlsx文件时,出现exception: java.lang.IllegalArgumentException: The supplied POIFSFileSystem does not contain a BIFF8 'Workbook' entry. Is it really an excel file? at org.apache.poi.hssf.usermodel.HSSFWorkbook.getWorkbookDirEntryName(HSSFWorkbook.java:223) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:245) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:188) 我注意到代码正在考虑它.xls文件,即使名称是.xlsx,我正在使用WorkbookFactory.create(fileInputStream); 打开文件。 我尝试将文件重命名为.zip,并在WinZip中打开,我得到一个错误 – 无效的zip文件。 该文件在Excel中打开,如果我保存它(不做一个更改),然后它在POI中正确打开。

Java只打印最后一个数据单元

我正在尝试从csv读取内容并将其打印到excel文件中。 到目前为止,我有这个,但是它只打印出csv的最后一个值到excel文件的第一个单元格中。 我尝试使用列和行的增量,但我得到一个空指针exception错误。 int i=0; int j=0; int k=0; int row=68; int column=0; String [] part={"052","064"}; try{ //InputStream inp = new FileInputStream(); //Workbook wb = WorkbookFactory.create(inp); Workbook wb = WorkbookFactory.create(new File("30_results_w_graphs.xls")); for (k=0; k<part.length; k++) { Sheet sheet = wb.getSheet(part[k]); Cell cell = null; Scanner scanner = new Scanner(new File(part[k]+".csv")); scanner.useDelimiter(","); while(scanner.hasNext()){ cell=sheet.getRow(row).getCell(column); cell.setCellValue(scanner.next()); //row++; […]

在打开使用Java创build的Excel电子表格时出现input/输出错误

我已经使用NetBeans 7.4实现了以下Java类,以便使用用户提供的数据创buildExcel Spreadsheet: package registration; import java.io.*; import java.io.BufferedReader; import java.io.IOException; import java.io.FileOutputStream; import java.io.InputStreamReader; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; import java.util.Scanner; // program uses class Scanner /** * * @author user */ public class Registration { /** * @param args the command line arguments */ /** Now a recursive class**/ public […]

使用POI事件模型将表单写入文本文件

我正在使用XLSX2CSV示例来parsing工作簿中的较大的工作表。 由于我只需要输出特定工作表的数据,因此我在工艺方法中添加了if语句以testing特定工作表。 当条件满足时,我继续这个过程。 public void process() throws IOException, OpenXML4JException, ParserConfigurationException, SAXException { ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage); XSSFReader xssfReader = new XSSFReader(this.xlsxPackage); StylesTable styles = xssfReader.getStylesTable(); XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); while (iter.hasNext()) { InputStream stream = iter.next(); String sheetName = iter.getSheetName(); if (sheetName.equals("SHEET1")||sheetName.equals("SHEET2")||sheetName.equals("SHEET3")||sheetName.equals("SHEET4")||sheetName.equals("SHEET5")){ processSheet(styles, strings, stream); try { System.setOut(new PrintStream( new FileOutputStream("C:\\Users\\edennis.AD\\Desktop\\test\\"+sheetName+".txt"))); } catch […]

无法dynamic设置HSSFCell对象的值

我正试图使用​​Apache POI将数据从我的jsp导出到excel。 我需要的列数取决于两个参数,因此,我通过查询获取它。 对于EX:如果需要的dynamic列数= 3,那么输出应该是这样的。 A | B | DH1 | DH2 | DH3 | C 这里A,B,C =静态列标题。 DH =dynamic列标题(从查询中提取) 为此,我首先设置A,B,C,然后find所需的DH列数。 然后我生成DH列。 之后,我在每个DH列中找出需要的值,将该值存入Arraylist,然后遍历Arraylist并设置值。 这里的代码 HSSFCell c1= row.createCell(0); HSSFCell c2= row.createCell(1); HSSFCell cellObject = null; oRecordMetaInfo = getNoofDynamicColumns(); NoofColumns = oRecordMetaInfo.getRecordCount(); for(int i = 2; i < NoofColumns + 2; i++) { cellObject = row.createCell((int) i); […]