java poi excel2010_java-无法使用Apache POI读取Excel 2010文件.第一...

使用“ SpreadsheetGear 7.1.1.120”创建testfile.xlsx.使用可以处理ZIP归档文件的软件打开XLSX文件,并查看/xl/workbook.xml进行查看.在worksheets / sheet?.xml文件中要注意,所有行元素都没有行号.如果我在第一个行标记中添加行号,例如< row r =“ 1”>然后apache POI可以读取此行.

如果是这个问题,谁来负责,那么答案肯定是Apache Poi和SpreadsheetGear ;-). Apache POI,因为row元素中的属性r是可选的.但是SpreadsheetGear还因为如果Excel本身曾经这样做,没有理由不使用r属性.

如果无法以可以直接读取Apache POI的格式获取testfile.xlsx,则必须使用基础对象.以下适用于您的testfile.xlsx:

import org.apache.poi.xssf.usermodel.*;

import org.apache.poi.ss.usermodel.*;

import org.apache.poi.ss.util.*;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.FileInputStream;

import java.io.InputStream;

import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;

import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetData;

import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;

import java.util.List;

class Testfile {

public static void main(String[] args) {

try {

InputStream inp = new FileInputStream("testfile.xlsx");

Workbook wb = WorkbookFactory.create(inp);

Sheet sheet = wb.getSheetAt(0);

System.out.println(sheet.getFirstRowNum());

CTWorksheet ctWorksheet = ((XSSFSheet)sheet).getCTWorksheet();

CTSheetData ctSheetData = ctWorksheet.getSheetData();

List ctRowList = ctSheetData.getRowList();

Row row = null;

Cell[] cell = new Cell[2];

for (CTRow ctRow : ctRowList) {

row = new MyRow(ctRow, (XSSFSheet)sheet);

cell[0] = row.getCell(0);

cell[1] = row.getCell(1);

if (cell[0] != null && cell[1] != null && cell[0].toString() != "" && cell[1].toString() != "")

System.out.println(cell[0].toString()+""+cell[1].toString());

}

} catch (InvalidFormatException ifex) {

} catch (FileNotFoundException fnfex) {

} catch (IOException ioex) {

}

}

}

class MyRow extends XSSFRow {

MyRow(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow row, XSSFSheet sheet) {

super(row, sheet);

}

}

我用过

org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet,

org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetData,

org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow.

这是Apache POI Binary Distribution poi-bin-3.10.1-20140818的一部分,并且在poi-ooxml-schemas-3.10.1-20140818.jar中

我已经扩展了XSSFRow,因为我们不能直接使用XSSFRow构造函数,因为它具有受保护的访问.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Apache POI库可以轻松地读取Excel文件。下面是一个使用XSSFWorkbook类读取.xlsx文件的示例代码: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel { public static void main(String[] args) { try { // 读取文件 File file = new File("data.xlsx"); FileInputStream inputStream = new FileInputStream(file); // 创建工作簿对象 XSSFWorkbook workbook = new XSSFWorkbook(inputStream); // 获取第一个工作表 org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0); // 循环读取每一行数据 for (Row row : sheet) { // 循环读取每一个单元格数据 for (Cell cell : row) { // 输出单元格内容 System.out.print(cell.toString() + "\t"); } System.out.println(); } // 关闭输入流 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 这个程序将打开名为“data.xlsx”的文件,并将其读取到XSSFWorkbook对象中。然后,它获取工作表中的第一个工作表,并使用循环遍历每一行和每一个单元格,输出单元格的内容。最后,它关闭输入流。 请注意,此示例代码需要添加Apache POI库的依赖项。您可以在Maven中添加以下依赖项: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值