无法使用 apache poi 从 Excel 文件中读取
Cannot read from Excel file using apache poi
这是我写的代码。
import java.util.*;
import java.lang.*;
import java.io.*;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
public class Main
{
public static void main (String[] args) throws java.lang.Exception
{
File inputFile = new File("./test.xlsx");
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(inputFile));
HSSFSheet sheet = workbook.getSheetAt(0);
Cell cell;
Row row;
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()){
row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()){
cell = cellIterator.next();
System.out.println(cell.getStringCellValue());
}
}
}
}
这是我遇到的错误。
The supplied data appears to be in the Office 2007+ XML. You are
calling the part of POI that deals with OLE2 Office Documents. You
need to call a different part of POI to process this data (eg XSSF
instead of HSSF)
问题:我做错了什么?
这可能对你有帮助:--
file = new File("/yourFile.xlsx");
workBook = WorkbookFactory.create(file);
sheet = workBook.getSheetAt(sheetNumber);
您正在尝试使用 HSSFWorkbook 访问 .xlsx 文件,您将需要使用 XSSFWorkbook 而不是 HSSFWorkbook。使用 HSSFWorkbook 我们可以访问 .xls 文件。
作为参考,您可以阅读 POI
正如 Rahul 所说,您正在使用 HSSF 部分,该部分用于从旧 excel 即 .xls(2007 年之前)格式中获取信息。
Workbook wb = WorkbookFactory.create(new File("/path/to/your/excel/file"));
Sheet mySheet = wb.getSheetAt(0);
Iterator<Row> rowIter = mySheet.rowIterator();
System.out.println(mySheet.getRow(1).getCell(0));
请尝试转换为以上格式,它适用于 .xls 和 .xlsx
这是我写的代码。
import java.util.*;
import java.lang.*;
import java.io.*;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
public class Main
{
public static void main (String[] args) throws java.lang.Exception
{
File inputFile = new File("./test.xlsx");
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(inputFile));
HSSFSheet sheet = workbook.getSheetAt(0);
Cell cell;
Row row;
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()){
row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()){
cell = cellIterator.next();
System.out.println(cell.getStringCellValue());
}
}
}
}
这是我遇到的错误。
The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
问题:我做错了什么?
这可能对你有帮助:--
file = new File("/yourFile.xlsx");
workBook = WorkbookFactory.create(file);
sheet = workBook.getSheetAt(sheetNumber);
您正在尝试使用 HSSFWorkbook 访问 .xlsx 文件,您将需要使用 XSSFWorkbook 而不是 HSSFWorkbook。使用 HSSFWorkbook 我们可以访问 .xls 文件。
作为参考,您可以阅读 POI
正如 Rahul 所说,您正在使用 HSSF 部分,该部分用于从旧 excel 即 .xls(2007 年之前)格式中获取信息。
Workbook wb = WorkbookFactory.create(new File("/path/to/your/excel/file"));
Sheet mySheet = wb.getSheetAt(0);
Iterator<Row> rowIter = mySheet.rowIterator();
System.out.println(mySheet.getRow(1).getCell(0));
请尝试转换为以上格式,它适用于 .xls 和 .xlsx