Tag: apache poi

是否有统一的ExcelExtractor类和xls和xlsx文件的工厂?

是否有一个共同的类和ExcelExtractor接口的实现,统一处理来自xls和xlsx源文本的提取? 也许,在ss包的东西。 我正在寻找一些能够让我做类似的事情,但是通过从工厂获得正确的实现,基于文件types。 现在,我不得不明确地使用xls文件的org.apache.poi.xssf.extractor.XSSFExcelExtractor和xlsx的org.apache.poi.xssf.extractor.XSSFExcelExtractor 。 例如,对于xls的显式方法: InputStream inp = new FileInputStream(path); HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp)); ExcelExtractor extractor = new ExcelExtractor(wb); extractor.setFormulasNotResults(true); extractor.setIncludeSheetNames(false); String text = extractor.getText(); 我可以实现我自己的工厂,但在此之前,我想问问是否有一种处理两种格式的通用方法(这是ss包的用途)。

使用Apache POI编写excel文件,但FileOutput只包含一列

我写了一个代码,它从一个inputexcel文件中获取数据,并用所需的组织编写一个新的输出文件。 我遇到的问题是,当我打开Java文件时,只有for循环中最新的列才有数据。 我已经testing过,看看我的for循环在不同的时间通过打开for循环是错误的。 testing显示它确实在正确的列中写入了正确的数据。 我不知道为什么它select删除前一列。 有没有一条线,我想保存单元格的值,我刚才保持在我正在工作的工作表上的数据? import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.SheetConditionalFormatting; import org.apache.poi.ss.usermodel.ConditionalFormattingRule; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.ComparisonOperator;//compare two different values import org.apache.poi.ss.usermodel.PatternFormatting; import org.apache.poi.ss.usermodel.IndexedColors; import java.util.Iterator; import java.io.*; import javax.swing.JFileChooser; public class Reorganizer { public static void main(String[] args) { /*File Chooser*/ JFileChooser fileChooser = new JFileChooser();//lets user […]

更好的方式从Excel文件中读取数据

我必须从一个大约有40列的Excel文件中读取数据,我正在使用列索引逐个读取它。 即: Cell cell = row.getCell(0); if (!(cell == null || cell.getCellType() == Cell.CELL_TYPE_BLANK)) { cell.setCellType(Cell.CELL_TYPE_STRING); // set in setter } 但是这种方法与Excel文件的结构紧密结合,因为如果在它们之间添加了新列,那么将需要主要代码(列的索引值)。 请build议我从Excel文件中读取数据的有效方法,这应该与Excel的结构松散地耦合,或者如果有任何其他方式可以提供与Java对象的字段的列绑定。

尝试提取数据并写入另一个电子表格是空的

输出文件被创build,但只有第一个单元被写入,没有别的。 我用系统打印testing了它,我想要的所有数据都显示在控制台中,但是没有写入工作表。 public class excel_read_2 { public static void main(String[] args) { try { FileInputStream file = new FileInputStream(new File("C:/Users/hM/Desktop/20151007-110016_outgoing.xls")); //input HSSFWorkbook workbook = new HSSFWorkbook(file); HSSFSheet sheet = workbook.getSheetAt(0); Workbook wb = new HSSFWorkbook(); Sheet sheet1 = wb.createSheet("new sheet"); FileOutputStream fileOut = new FileOutputStream("C:/Users/hM/Desktop/workbook.xls"); //output int rowcounter = 0; for (int rowNum = 150; […]

使用jxl读取Excel工作表不能工作超过255行

我尝试阅读使用jxl jar旧格式的Excel表,它工作正常,但在255行后抛出错误: java.lang.ArrayIndexOutOfBoundsException: 255 我不能用Poi jar阅读,因为它是旧的格式,任何帮助非常感谢! 下面是下面给出的Java代码片段: public HashMap<String, Float> readAllRowsOnePoint(String path, String sheetname) throws BiffException, IOException { System.out.println("Path download" + path); FileInputStream fs = new FileInputStream(path); Workbook wb = Workbook.getWorkbook(fs); Sheet sheet = wb.getSheet(sheetname); // To get the number of rows present in sheet int totalNoOfRows = 500; System.out.println("The rows count is " + […]

使用java刷新Excel查询

我有一个复杂的Excel表和很多的公式和数据透视表。 它使用查询从数据库中提取数据,然后枢轴和其他公式对该数据进行操作,并在同一个Excel中创build其余的工作表。 手动执行此操作需要单击刷新整个工作表的刷新button。 现在我需要做的是刷新使用Java代码的Excel表。 我已经使用兴趣点等,但我不知道在哪里可以find这个function来刷新Excel查询。 我努力研究这个论坛,但仍然不是完美的解决scheme。 总的想法是创build一个程序,将刷新这张表每30分钟使用Windows调度程序,我将安排我的Java程序。 我不知道VB ..如果有人有更好的办法来实现这一点,请让我知道。

使用Java读取货币和%

我正在尝试使用Apache Poi(v3.11 / XSSFWorkbook)读取excel文件。 我正在读取一个特定的工作表{ex sheet(0)},这个工作表是由来自同一个文件的大约15张不同的macros组成的。 问题是我能够读取非格式化的string数据,但无法读取格式化的数据,如货币或%。 无论如何,我不会控制Excel工作表。 我将从networking共享path读取文件。 XSSFWorkbook myWorkBook = null XSSFSheet mySheet = null; Row rowHeader = null; Row rowData = null; FileInputStream fis = new FileInputStream( new File( "inputfile.xlsx")); myWorkBook = new XSSFWorkbook(fis); mySheet = myWorkBook.getSheetAt(0); rowHeader = mySheet.getRow(0); rowData = mySheet.getRow(1); for (Cell s : rowHeader) { System.out.print("| "+s.getStringCellValue()); System.out.println(" […]

定义dynamic单元格范围

我正在使用APACHE POI进行条件格式化。 我得到的txt文件作为input,我把它转换成工作表,然后执行条件格式。 现在,第一列和标题是我不会做任何格式的文本。 我必须对其他单元格执行条件格式化,比如B2:I10(但是它会不断变化)。我怎样才能dynamic地定义单元格范围。 目前,我有 CellRangeAddress[] my_data_range = {CellRangeAddress.valueOf("B2:I10")}; my_cond_format_layer.addConditionalFormatting(my_data_range,my_rule1) 我将如何dynamic定义my_data_range,并保留第一列和第一行。

如何使用Java在Excel电子表格中从多个工作表中读取特定单元格的内容?

我有一个电子表格有超过100张。 我必须从每张纸上读取特定的单元格内容,例如第7行第5列,并将其单独写入一列中。

读取多个单元格内的单个值的Excel文件中的值

我需要从Java中提取数据,这通常不是问题。 我有一个特殊的情况,我找不到一个好的页面。 我有一个值,但这个值是在4行。 例如, value = 25 ,但A1 , A2 , A3和A4一起显示该值。 Apache POI版本是3.6。 我找不到一个好方法来做到这一点。 有人能指点我吗? 显然row.hasNext()在这里不起作用。 有没有方法或方法?