Tag: apache poi

Apache POI读取excel单元格的公式值

我正在上传Excel文件的应用程序,并将其值插入数据库。 我的代码如下所示: FileInputStream inputStream = new FileInputStream(excelFile); String fileExtension = FilenameUtils.getExtension(temp1); Workbook wb = null; if(fileExtension.equalsIgnoreCase("xls")){ wb = new HSSFWorkbook(inputStream); } else { wb = new XSSFWorkbook(inputStream); } if (wb != null){ logger.info("Read File"); } Sheet sheet = null; Row row = null; Cell cell = null; dbConnect(); sheet = wb.getSheetAt(0); int rows = sheet.getPhysicalNumberOfRows() […]

读写Excel文件的改进

有没有可能提高读写使用POI库和Java的Excel文件? 现在我的代码如下所示: //Reading a file FileInputStream fin = new FileInputStream(new File(localizationOfExcelFile)); Workbook workbook = new XSSFWorkbook(fin); //Writing to a file FileOutputStream fout = new FileOutputStream(new File(localizationOfExcelFile)); workbook.write(fout); fout.close(); 提前感谢!

在使用java,Apache POI的每3列之后,在Excel中创build列标题

我试图创build一个Excel表,其中我得到一个ArrayList的所有标题值,并循环它打印每3个单元格后的标题。 这是我的代码。 for (int x = 4; x < projectLocationList.size(); x++) { columnHeaderCell = regionList.createCell(x+3); columnHeaderCell.setCellValue(projectLocationList.get(x-3)); columnHeaderCell.setCellStyle(columnHeaderStyle); } 对于x=4因为我必须从第7格打印列。 我面临的问题是我只得到最后三个值。 请帮我解决这个循环。 谢谢。

\ n不适用于Excel单元格

我有一个问题,创build一个单元格的新行。 当我创build一个文件时,新行不会以正确的方式显示。 我希望有人能帮我解决这个问题。 cell.setCellValue(text); if(text.indexOf(System.getProperty("line.separator")) != -1) { int countRows = text.split(System.getProperty("line.separator")).length; style.setWrapText(true); cell.setCellStyle(style); row.setHeightInPoints((countRows * sheet.getDefaultRowHeightInPoints())); sheet.autoSizeColumn((short) countRows); } 这是我的Excel文件 当我做一个新的Excel文件,所有单元格看起来像单元格A1。 没有新的路线。 当我点击单元格A1显示单元格的内容与新行的描述。 我在单元格A2中双击,单元格以正确的方式显示内容。 新的行标签似乎工作。 我的问题是,新行不在excel文件中的单元格中显示。 但在单元格描述中显示。 有没有办法显示所有的单元格像单元格A2没有双击? 谢谢

尝试将webtable导出为ex​​cel时出现无效的select器错误

错误是:给定的select器表[class ='stats_table data_grid'] tbody tr [0] td [0]无效或不导致WebElement。 发生以下错误:InvalidSelectorError:指定了无效或非法的select器 观察:我检查了没有[“+ r +”]和[“+ c +”]的cssSelector,它是有效的。 所以错误来自于加“[+ r +”]和[“+ c +”],我无法缓解。 我的总体目标是从mlb.com/stats的webtable中获取数据,并将其input到Excel表格中。 几乎99%的代码工作正常,除了无效的cssSelector问题。 我的代码是: package automate; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class MLBtoXL { static WebDriver driver = new […]

如何从Web上的边桌数据打印列标题与WebDriver优秀

问题下面的代码允许我打印列标题或将网页表格数据打印到CSV文件,具体取决于我是select“th”还是“td”标签,但不是同时select。 我的问题如何在CSV输出中同时打印csv'th'和'td'文本? 代码我已经尝试了我的代码的2个版本,但结果是相同的。所附的两个版本。 代码版本1 public class WebToCSV { static WebDriver driver = new FirefoxDriver(); public static void main(String[] args) throws Throwable { //driver.navigate().to("http://goo.gl/El1PIV"); driver.navigate().to("http://www.bloomberg.com/markets/stocks/futures"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); WebElement table = driver.findElement(By.cssSelector ("div[class='data-tables first']")); List<WebElement> irow = table.findElements (By.cssSelector("div[class='data-tables first'] tr")); System.out.println("No. of rows in the table are: " + irow.size()); // Create excel workbook and […]

用POI读/写非常大的pptx文件

我们在项目中使用Apache POI(版本3.9)来创buildPowerPoint(pptx)文件。 但是,其中一些变得非常大(每张幻灯片上有2000多张幻灯片,形状很多),因此这一代产生的GC overhead limit exceeded错误。 堆空间的大小不在我们的控制之中,因为我们只为RCP的“父”应用程序开发插件。 有什么办法可以写(和读)这样的大文件吗? 我们使用Excel文档的stream式API获得了巨大的成功,但是没有针对pptx的stream式API。 我的第一个想法是将大文件(创build时)分割成更小的块。 但是,将这些文件合并到一个大文件是不可能的(当POI现在读取大文件时,再次获取GC错误) 我search了很多好的解决scheme,但没有成功。 不幸的是,pptx支持目前只处于POI的Beta状态。 有人在这里有个build议吗? 我的解决scheme:可悲的是,我无法find一个解决scheme,我不必做很多的XML编辑。 对于所有具有相同问题的小型路线图,将B的内容合并到演示文稿A中 把A和B解压到单独的文件夹中 从A获取最后一张幻灯片ID,重命名B中的所有幻灯片,以避免名称冲突 将新的幻灯片添加到Content_Types.xml和presentations.xml 将presentations.xml的新条目添加到presentations.xml.rels 编辑slideX.xml.rels以便它们引用正确的东西 基本上确保将所有带有用户生成内容(幻灯片,笔记,布局)的文件复制到A中,并重命名以避免冲突。 然后search所有*.xml.rels + presentation.xml + content_types.xml并添加/修改rId内容

JAVA Apache POI自定义格式

我正在使用poi版本: 3.14 我访问一个Excel( .xlsx )文件 this.workbook = WorkbookFactory.create(new FileInputStream(f.getPath())); this.workbook.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK); this.sheet = workbook.getSheetAt(0); 以下是应用于单元格的.xlsx文件中的自定义格式。 我想在我的代码中显示单元格的值。 正如你可以看到在文件中可见的单元格值是“031642153283700100”。 另外,当我在这个特定的细胞clic,价值改变为“42153283700100”(数据没有自定义格式应用)。 编辑 原始单元格types是CELL_TYPE_NUMERIC。 ==> 如何在java代码中显示格式化值“031642153283700100”? 我试过了 : cell.toString()=>“42153283700100” cell.getNumericCellValue()=>“42153283700100” 与以前的单元格types转换: cell.setCellType(Cell.CELL_TYPE_STRING); cell.getStringCellValue()=>“42153283700100” cell.getRichStringCellValue()=>“42153283700100” 具有formatCellValue(cell)方法的旧HSSFDataFormatter =>“421532837001000316”

通过Java读取excel文件.xlsx

所以我的excel文件比较小。 它包含8张。 每张纸都有我需要阅读的数据的“logging”。 每张纸也有第一行保留为我跳过的标题; 所以我的数据将从每张表的第二行(第一个索引)开始,到最后一个logging结束。 所以,下面是我的代码迭代通过工作表,并阅读每行,但它无法读取每张表。 而我似乎无法弄清楚为什么。 请看看,任何build议将不胜感激。 谢谢! FileInputStream fis = new FileInputStream(new File(filePath)); XSSFWorkbook wb = new XSSFWorkbook(fis); DataFormatter formatter = new DataFormatter(); //iterate over sheets for (int i=0; i<NUM_OF_SHEETS; i++) { sheet = wb.getSheetAt(i); sheetName = sheet.getSheetName(); //iterate over rows for (int j=1; j<=lastRow; j++) { //1st row or 0-index of each […]

Java递增对象名称

我目前的问题,我覆盖我的细胞对象。 既然我不能做("cell" + i) ,我怎么能做到这一点? public void printMonthCounts(int cellMonthPosition, String month) { for (int i = 0; i < 10; i++) {//11 countrys Row row = sheet2.createRow(7 + i);//Starts with Gb Cell cell = row.createCell(cellMonthPos);//Month position switch (i) { case 0: cell.setCellValue(countryHash.get(month).getGb()); break; case 1: cell.setCellValue(countryHash.get(month).getPt()); break; case 2: cell.setCellValue(countryHash.get(month).getEs()); break; } } 我正在使用Apache POI […]