POI 通用 读取excle xls xlsx 文件
程序员文章站
2022-07-13 13:22:26
...
格式要求:文件中第一行必须是标题 全文不能有合并单元格
例如:
姓名 | 性别 |
---|---|
张三 | 男 |
xlsx 文件读取
/**
* 读取xlsx文件
* @param inputStream
* @return
* @throws IOException
*/
public static List<List<String>> getXlsxList(InputStream inputStream) throws IOException {
/** 对应一个Excel文件 */
XSSFWorkbook xssfworkbook = null;
List<List<String>> sheetlist = null;
try {
xssfworkbook = new XSSFWorkbook(inputStream);
/** 默认第一个工作表 */
XSSFSheet sheet = xssfworkbook.getSheetAt(0);
sheetlist = new ArrayList<List<String>>();// 对应一页sheet
/** 获取行数 */
int titleCellSize = 0;
if (sheet.getLastRowNum() > 0) {
XSSFRow titleRow = sheet.getRow(0);// 获取标题行
titleCellSize = titleRow.getLastCellNum();// 行中有多少个单元格,也就是有多少列
}
/** 获得行数 */
int rowSize = sheet.getLastRowNum();
/** 解析数据 */
for (int j = 1; j < rowSize; j++) {// 遍历行
XSSFRow row = sheet.getRow(j);
if (row == null) {// 略过空行
continue;
}
/** 获取每一列的数据 */
sheetlist.add(getXlsxRowList(row, titleCellSize));
}
} finally {
if (xssfworkbook != null) {
xssfworkbook.close();
}
}
return sheetlist;
}
/**
* 获取一行 每一列的信息 注 这个方法 必须传入标题列数 列为空时 以空字符补充
* @param row
* @param titleCellSize
* @return
*/
private static List<String> getXlsxRowList(XSSFRow row, int titleCellSize) {
List<String> rowList = new ArrayList<String>();// 对应一个数据行,一行的数据
for (int k = 0; k < titleCellSize; k++) {
XSSFCell cell = row.getCell(k);
String value = "";
if (cell != null) {
/** 设置单元格类型 */
cell.setCellType(CellType.STRING);
/** 内容转化字符串 */
value = cell.getStringCellValue();
}
rowList.add(value);
}
return rowList;
}
xls文件读取
/**
* 将xls 表格中的数据 转换成集合
* @return
* @throws IOException
*/
public static List<List<String>> getXlsList(InputStream inputStream) throws IOException {
/** 对应一个Excel文件 */
HSSFWorkbook hssfworkbook = null;
List<List<String>> sheetlist = null;
try {
hssfworkbook = new HSSFWorkbook(inputStream);
/** 默认第一个工作表 */
HSSFSheet sheet = hssfworkbook.getSheetAt(0);
sheetlist = new ArrayList<List<String>>();// 对应一页sheet
/** 获取行数 */
int titleCellSize = 0;
if (sheet.getLastRowNum() > 0) {
HSSFRow titleRow = sheet.getRow(0);// 获取标题行
titleCellSize = titleRow.getLastCellNum();// 行中有多少个单元格,也就是有多少列
}
/** 获得行数 */
int rowSize = sheet.getLastRowNum();
/** 解析数据 */
for (int j = 1; j < rowSize; j++) {// 遍历行
HSSFRow row = sheet.getRow(j);
if (row == null) {// 略过空行
continue;
}
/** 获取每一列的数据 */
sheetlist.add(getXlsRowList(row, titleCellSize));
}
} finally {
if (hssfworkbook != null) {
hssfworkbook.close();
}
}
return sheetlist;
}
/**
* 获取一行 每一列的信息 注 这个方法 必须传入标题列数 列为空时 以空字符补充
* @param row
* @param titleCellSize
* @return
*/
private static List<String> getXlsRowList(HSSFRow row, int titleCellSize) {
List<String> rowList = new ArrayList<String>();// 对应一个数据行,一行的数据
for (int k = 0; k < titleCellSize; k++) {
HSSFCell cell = row.getCell(k);
String value = "";
if (cell != null) {
/** 设置单元格类型 */
cell.setCellType(CellType.STRING);
/** 内容转化字符串 */
value = cell.getStringCellValue();
}
rowList.add(value);
}
return rowList;
}
maven 依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>RELEASE</version>
</dependency>
上一篇: Linux 下ffmpeg的安装