java读取excel文件
博客专区 > vapy 的博客 > 博客详情
java读取excel文件
vapy 发表于2年前
java读取excel文件
  • 发表于 2年前
  • 阅读 12
  • 收藏 0
  • 点赞 2
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: java读取excel文件,poi

1>. 先用inputstream获取excel文件的io流
2>. 然后创建一个内存中的excel文件HSSFWorkbook类型对象.这个对象表示了整个excel文件.
3>. 对这个excel文件的每页做循环处理HSSFSheet
4>. 对每页中的每行做循环处理HSSFRow
5>. 对每行中的每个单元格做做处理,获取这个单元格的值HSSFCell
6>. 把这行的结果添加到一个List数组中.
7>. 把每行的结果添加到最后的总结果中.
8>. 解析完以后就获取了一个List< List < String > > 类型的对象了.

需要用到的jar包

源码

public class ReadExcel {
	public static void main(String[] args) {
		try {
			List<List<String>> resultXls = readXls("D:/study/MyEclipse/WorkSpace/myCode/test.xls");
			for(List<String> list : resultXls){
				for(String str : list){
					System.out.print(str + "\t");
				}
				System.out.println();
			}
System.out.println("-----------------------");
			List<List<String>> resultXlsx = readXlsx("D:/study/MyEclipse/WorkSpace/myCode/test.xlsx");
			for(List<String> list : resultXlsx){
				for(String str : list){
					System.out.print(str + "\t");
				}
				System.out.println();
			}
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//读取2003版本的xls文件
	private static List<List<String>> readXls(String path) throws IOException {
		InputStream is = new FileInputStream(path);
		//整个excel
		HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
		List<List<String>> result = new ArrayList<List<String>>();
		for (int sheet = 0, sheetNum = hssfWorkbook.getNumberOfSheets(); sheet < sheetNum; sheet++) {
			//页
			HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(sheet);
			if(null == hssfSheet)
			{
				continue;
			}
			for(int row = 0, rowNum = hssfSheet.getPhysicalNumberOfRows(); row < rowNum; row++){
				//行
				HSSFRow hssfRow = hssfSheet.getRow(row);
				int minColIx = hssfRow.getFirstCellNum();
				int maxColIx = hssfRow.getLastCellNum();
				List<String> rowList = new ArrayList<String>();
				for(int col = minColIx; col <= maxColIx; col++){
					//单元格
					HSSFCell hssfCell = hssfRow.getCell(col);
					if(null == hssfCell)
					{
						continue;
					}
					rowList.add(hssfCell.toString());
				}
				result.add(rowList);
			}
		}
		is.close();
		return result;
	}
	
	//读取2007版本的xlsx文件
	private static List<List<String>> readXlsx(String path) throws IOException {
		InputStream is = new FileInputStream(path);
		XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
		List<List<String>> result = new ArrayList<List<String>>();
		for (int sheet = 0, sheetNum = xssfWorkbook.getNumberOfSheets(); sheet < sheetNum; sheet++) {
			XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(sheet);
			if(null == xssfSheet)
			{
				continue;
			}
			for(int row = 0, rowNum = xssfSheet.getPhysicalNumberOfRows(); row < rowNum; row++){
				XSSFRow xssfRow = xssfSheet.getRow(row);
				int minColIx = xssfRow.getFirstCellNum();
				int maxColIx = xssfRow.getLastCellNum();
				List<String> rowList = new ArrayList<String>();
				for(int col = minColIx; col <= maxColIx; col++){
					XSSFCell xssfCell = xssfRow.getCell(col);
					if(null == xssfCell)
					{
						continue;
					}
					rowList.add(xssfCell.toString());
				}
				result.add(rowList);
			}
		}
		is.close();
		return result;
	}
}

 

共有 人打赏支持
粉丝 0
博文 5
码字总数 2000
×
vapy
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: