And*_*rew 16 java apache excel apache-poi xssf
我刚才有一个关于如何使用Apache的XSSF格式读取xlsx文件的快速问题.
现在我的代码看起来像这样:
InputStream fs = new FileInputStream(filename); // (1)
XSSFWorkbook wb = new XSSFWorkbook(fs); // (2)
XSSFSheet sheet = wb.getSheetAt(0); // (3)
Run Code Online (Sandbox Code Playgroud)
......导入了所有相关的东西.我的问题是,当我点击运行时,它会陷入第(2)行,几乎是无限循环.filename只是一个字符串.
如果有人能给我一些关于如何解决这个问题的示例代码,我将非常感激.我现在想要的只是从xlsx文件中读取单个单元格; 我使用HSSF用于xls文件并且没有问题.
谢谢你的帮助,安德鲁
小智 9
InputStream inp = null;
try {
inp = new FileInputStream("E:/sample_poi.xls");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
Header header = sheet.getHeader();
int rowsCount = sheet.getLastRowNum();
System.out.println("Total Number of Rows: " + (rowsCount + 1));
for (int i = 0; i <= rowsCount; i++) {
Row row = sheet.getRow(i);
int colCounts = row.getLastCellNum();
System.out.println("Total Number of Cols: " + colCounts);
for (int j = 0; j < colCounts; j++) {
Cell cell = row.getCell(j);
System.out.println("[" + i + "," + j + "]=" + cell.getStringCellValue());
}
}
} catch (Exception ex) {
java.util.logging.Logger.getLogger(FieldController.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
inp.close();
} catch (IOException ex) {
java.util.logging.Logger.getLogger(FieldController.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
我很乐意这会回答你的问题:http://poi.apache.org/spreadsheet/quick-guide.html#ReadWriteWorkbook
简而言之,您的代码应如下所示:
InputStream inp = new FileInputStream("workbook.xlsx");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
Row row = sheet.getRow(2);
Cell cell = row.getCell(3);
Run Code Online (Sandbox Code Playgroud)
为什么要将文件分解为输入流?XSSFWorkbook 有一个构造函数,它仅将路径作为字符串。只需对字符串的路径进行硬编码即可。创建工作簿后,您可以从中创建 XSSFSheets。然后是 XSSFCells,它最终将允许您读取单个单元格的内容(单元格本质上基于 x,y 位置)
| 归档时间: |
|
| 查看次数: |
75284 次 |
| 最近记录: |