java POI读取Excel时Files 与 InputStreams两种方式的比较


		/**
		 * When opening a workbook, either a .xls HSSFWorkbook, or a .xlsx
		 * XSSFWorkbook, the Workbook can be loaded from either a File or an
		 * InputStream. Using a File object allows for lower memory consumption,
		 * while an InputStream requires more memory as it has to buffer the
		 * whole file.
		 * new File会节省内存,new FileInputStream会占用较大内存
		 * If using WorkbookFactory, it's very easy to use one or the other:
		 */
		
		// 第一种读取方式 Use a file
		Workbook wb = WorkbookFactory.create(new File("MyExcel.xls"));

		//第二种读取方式  Use an InputStream, needs more memory
		Workbook wb0 = WorkbookFactory.create(new FileInputStream(
				"MyExcel.xlsx"));
				
				

		/**
		 * If using HSSFWorkbook or XSSFWorkbook directly, you should generally
		 * go through NPOIFSFileSystem or OPCPackage, to have full control of
		 * the lifecycle (including closing the file when done):
		 * 如果直接用HSSFWorkbook or XSSFWorkbook ,你需要显式关闭文件
		 */
		
		//第三种读取方式  HSSFWorkbook, File
		NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("file.xls"));
		HSSFWorkbook wb1 = new HSSFWorkbook(fs.getRoot(), true);

		fs.close();

		//第四种读取方式  HSSFWorkbook, InputStream, needs more memory
		NPOIFSFileSystem fs1 = new NPOIFSFileSystem(new FileInputStream(
				"MyExcel.xlsx"));
		HSSFWorkbook wb2 = new HSSFWorkbook(fs.getRoot(), true);

		//第五种读取方式  XSSFWorkbook, File
		OPCPackage pkg = OPCPackage.open(new File("file.xlsx"));
		XSSFWorkbook wb3 = new XSSFWorkbook(pkg);

		pkg.close();

		//第六种读取方式  XSSFWorkbook, InputStream, needs more memory
		OPCPackage pkg1 = OPCPackage.open(new FileInputStream("MyExcel.xlsx"));
		XSSFWorkbook wb4 = new XSSFWorkbook(pkg);

		pkg1.close();
		
		
		
	
总结:总共有6种方式创建读取的Excel对应,new File的方式较省内存,new InputStream的方式较耗内存
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值