首先说一下已经开源的类库POI,可以读取excel数据:
类名 说明
HSSFWorkbook Excel的文档对象
HSSFSheet Excel的表单
HSSFRow Excel的行
HSSFCell Excel的格子单元
HSSFFont Excel字体
HSSFDataFormat 格子单元的日期格式
HSSFHeader Excel文档Sheet的页眉
HSSFFooter Excel文档Sheet的页脚
HSSFCellStyle 格子单元样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表*/
读取表格全部代码:
package com.ftz.demo;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
/**
* @author ${范涛之}
* @Description
* @create 2021-12-10 21:30
*/
public class Test {
/*POI常用类说明
类名 说明
HSSFWorkbook Excel的文档对象
HSSFSheet Excel的表单
HSSFRow Excel的行
HSSFCell Excel的格子单元
HSSFFont Excel字体
HSSFDataFormat 格子单元的日期格式
HSSFHeader Excel文档Sheet的页眉
HSSFFooter Excel文档Sheet的页脚
HSSFCellStyle 格子单元样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表*/
/**
* 读取Excel文件数据插入数据库
* @param filePath
* @return
*
*/
public static String readExcel(String filePath) throws IOException {
InputStream in = null;//读取刘文件
XSSFWorkbook workbook = null;//Excel文件对象
XSSFSheet sheet = null;//表单对象
XSSFRow row = null;//行
XSSFCell cell = null;//列
try {
// filePath = System.getProperty("user.dir")+ File.separator+"excelDownload"+File.separator+"test.xls";
in = new FileInputStream(filePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
workbook = new XSSFWorkbook(in);
} catch (IOException e) {
e.printStackTrace();
}
sheet = workbook.getSheetAt(0);//获取第一个表单对象
row = sheet.getRow(0);//获取第一个表单的第一行
int rows = sheet.getPhysicalNumberOfRows();//获取总行数
int columns = row.getPhysicalNumberOfCells();//获取第一行的列数
//遍历行列
for (int i=0;i<rows;i++){
row = sheet.getRow(i);
for (int j=0;j<columns;j++){
cell = row.getCell(j);
String cellValue = cell.getStringCellValue();
System.out.println("cellValue"+cellValue);
}
}
return "读取完成";
}
public static void main(String[] args) throws IOException {
readExcel("D:\\C桌面\\test\\test.xlsx");
}
}
这里说一下读取结果可能会出现的问题:
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)
at org.apache.poi.poifs.storage.Header
这个是因为excel2003和excel2007版本的问题
解决办法
-
(1)判断文件后缀名是xls,还是xlsx
-
(2)如果是xls,使用HSSFWorkbook;如果是xlsx,使用XSSFWorkbook
运行结果:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81024.html