这几天有个需求问题,将ftp内excel文件读取存入到数据库,一开始因为要用POI解析Excel使用的工具类是传入一个路径,但是因为远程FTP传入的路径在项目中老报错找不到文件,想了想之后应该是路径传入工具类后,在工具类读取时候直接用了new InputStream这样并不在FTP SERVER进行,所以会报错,修改了下工具类,使用了读取文件的流传入工具类.读取内容就OK了.下面是代码内容:
读取的二维数组第一维度是Excel的行数据, 第二维度是Excel的多行数据
/** 读取存在任意合并单元格的工具类 */
package com.util;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.util.CellRangeAddress;
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;
/**
* @author 楚长川
* @version 创建时间:2018/8/27 9:56
* @ClassName: ExcelReaderUtil
* @Title: parent
* @Description: todo:(Excel读取到二维集合-此工具类可以对应存在合并单元格的excel)
*/
public class ExcelReaderUtil {
/**
* @param is
* @return List<List<String>> 返回类型
* @Title: readXls
* @Description: 处理xls文件
*/
public static List<List<String>> readXls(InputStream is) throws Exception {
// HSSFWorkbook 标识整个excel
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
List<List<String>> result = new ArrayList<List<String>>();
int size = hssfWorkbook.getNumberOfSheets();
// 循环每一页,并处理当前循环页
for (int numSheet = 0; numSheet < size; numSheet++) {
// HSSFSheet 标识某一页
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 处理当前页,循环读取每一行
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
// HSSFRow表示行