我正在开发一个允许我读取文件.xls
和.xlsx
. 我设法.xls
使用 Apache POI 3.13 库实现了阅读扩展,HSSFWorkbook
并且我知道我需要XSSFWorkbook
阅读.xlsx
.
我的问题是我是否以及如何让应用程序读取这两个扩展。
附上我在 .xls 中读取文件的部分代码
HSSFWorkbook workBook = new HSSFWorkbook (fileSystem);
HSSFSheet sheet = workBook.getSheetAt (0);
int totalRows = sheet.getPhysicalNumberOfRows();
System.out.println("Filas totales: "+totalRows);
if (totalRows <= 4){
JOptionPane.showMessageDialog(null,
"El archivo debe contener al menos 1 artículo.", //Mensaje
"Mensaje de Advertencia", //Título
JOptionPane.WARNING_MESSAGE);
}
Iterator<?> rows = sheet.rowIterator ();
ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
while (rows.hasNext ())
{
HSSFRow row = (HSSFRow) rows.next();
int rowNumber = row.getRowNum ();
// muestra el número de fila
System.out.println ("No. Fila: " + rowNumber);
// get a row, iterate through cells.
Iterator<?> cells = row.cellIterator ();
ArrayList<String> rowData = new ArrayList<String>();
while (cells.hasNext ())
{
HSSFCell cell = (HSSFCell) cells.next ();
switch (cell.getCellType ())
{
case HSSFCell.CELL_TYPE_NUMERIC :
{
// NUMERIC CELL TYPE
System.out.println ("Numerico: " + cell.getNumericCellValue ());
rowData.add(cell.getNumericCellValue () + "");
break;
}
case HSSFCell.CELL_TYPE_BLANK :
{
// NUMERIC CELL TYPE
System.out.println ("Campo en Blanco" + cell.getErrorCellValue ());
rowData.add(cell.getErrorCellValue () + "");
break;
}
case HSSFCell.CELL_TYPE_STRING :
{
// STRING CELL TYPE
HSSFRichTextString richTextString = cell.getRichStringCellValue ();
System.out.println ("String: " + richTextString.getString ());
rowData.add(richTextString.getString ());
break;
}
default:
{
// types other than String and Numeric.
System.out.println ("Tipo de dato no soportado.");
break;
}
} // end switch
} // end while
data.add(rowData);
您可以使用 POI 读取这两种类型的文件。这是使用 POI 提供的通用接口打开 excel 文件(xls 或 xlsx)的基本示例:
使用接口
Workbook
,Sheet
和源并不重要Row
。Cell
此外,这些接口的方法与您发现的用于使用 HSSF 的方法相似,因此您可以更快地掌握它。你好,也许你的问题已经得到解答,但我会用一个方法来做,如下所示:这个方法在 jtable 中读取和写入。