首页
IT
登录
6mi
u
盘
搜
搜 索
IT
java解析excel
java解析excel
xiaoxiao
2021-12-14
16
一、问题背景
今天使用jxl.jar包解析excle时,发现一个错误。运行以下程序时会提示如下错误:
jxl.read.biff.BiffException: Unable to recognize OLE stream at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:99) at jxl.read.biff.File.<init>(File.java:113) at jxl.Workbook.getWorkbook(Workbook.java:243) at jxl.Workbook.getWorkbook(Workbook.java:228) at com.ssm.test.LAAgentTest.testReadExcel2003 代码如下:
Java代码
@Test
public
void
testReadExcel2003() {
try
{
String path =
"e:/class.xlsx"
;
InputStream ins =
new
FileInputStream(path);
jxl.Workbook tWorkbook = jxl.Workbook.getWorkbook(ins);
jxl.Sheet sheet = tWorkbook.getSheet(
0
);
System.out.println(
"第一个工作簿的名称是:"
+sheet.getName());
int
rows = sheet.getRows();
for
(
int
i=
0
; i<rows; i++) {
if
(i<
2
) {
continue
;
}
jxl.Cell[] cells = sheet.getRow(i);
for
(
int
j=
0
; j<cells.length; j++) {
System.out.println(cells[j].getContents());
}
}
}
catch
(Exception ex) {
ex.printStackTrace();
}
}
二、解决办法
后来发现是因为jxl不支持2007版excle的解析。因此,打开class.xlsx文件后,选择另存为,保存类型选择2003版本。将代码中的class.xlsx改为另存为excle的名称,运行程序没有问题。
三、使用apache的poi.jar解析excle,兼容2003和2007
废话不说,直接上代码:
Java代码
@Test
public
void
testReadExcel2007() {
try
{
String path =
"e:/class.xlsx"
;
InputStream ins =
new
FileInputStream(path);
Workbook wb = WorkbookFactory.create(ins);
Sheet sheet = wb.getSheetAt(
0
);
int
columnNum = sheet.getRow(
0
).getLastCellNum() - sheet.getRow(
0
).getFirstCellNum();
for
(
int
j =
0
; j < sheet.getLastRowNum(); j++) {
Row row = sheet.getRow(j);
for
(
int
i =
0
; i < columnNum; i++) {
Cell cell = row.getCell(i, Row.CREATE_NULL_AS_BLANK);
System.out.println(cell);
}
}
}
catch
(Exception ex) {
ex.printStackTrace();
}
}
转载请注明原文地址: https://ju.6miu.com/read-963970.html
专利
最新回复
(
0
)