对poi-Excel导入的浅层理解
本文即将对POI方式导入excel文件最核心的步骤予以说明,为的是简单,也是为了阐明文件导入的原理.
文件导入有一个很明显的线索:
1.首先是我们知道硬盘中的文件,即:文件对象File file
2.然后通过文件对象file ,我们可以获取它的路径String filePath = file.getAbsolutePath()
3.根据filePath,我们可以创建一条文件输入流:FileInputStream fis = new FileInputStream(filePath),这条流就像一条连接硬盘到内存的单向河流,把excel文件流到了内存中,但是得有东西接收才行呀,别慌,有Workbook容器
4.Workbook book = new XSSFWorkbook(fis)(注意,如果是xls的excel文件,要用HSSFWorkbook去接收,所谓什么岁数的人穿什么样式的衣裳)
5.得到了workbook,就相当于得到了整个excel文件,但是它还是冰冻的,需要我们进一步给它化冻,才能看清其真面目,接下来就有意思了,一层层剥开
6.首先是通过workbook获取其中的一个工作簿sheet,workbook.getSheetAt(0)//0表示第一个
7.获取了工作簿,里面还有行,列,那么我们是先获取行,还是先获取列呢,规定是这样的顺序:工作簿--->行Row--->列cell,注意这里的列不是column,而是cell,表示比row低一级别
看这里:
通过工作簿获取行:Row row = sheet.getRow(0);//这是获取第一行
通过行获取单元格:row.getCell(0);//这是获取该行的第一个单元格
8.如果我们像获取其他信息,比如行数,列数,格式怎么办?也有妙招:
获取行数,是通过sheet.getLastRowNum()
获取列数,是通过获取任意行,然后获取该行的单元格数来间接得到的,如row.getPhysicalNumberOfCells()
9.有没有发现:从硬盘的文件到内存中操作单元格,它们之间好像有一种严格的层级关系,会了这种关系,再也不会忘记文件导入怎么搞了:
文件对象/文件路径/输入流/工作表/工作簿/行/单元格
你记住了吗?
注:上面只是简单的表达文件导入的原理,还有一些细节,等待大家挖掘,比如处理异常,对xls和xlsx的不同处理,对单元格String和Number类型格式的处理,大家若遇到问题可百度,因为都是小问题
对poi-Excel导入的浅层理解的更多相关文章
- struts2.1笔记01:MVC框架思想浅层理解
1. Struts 1是全世界第一个发布的MVC框架: 它由Craig McClanahan在2001年发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,S ...
- 对poi-excel导出的浅层理解
上一篇对excel导入做了浅层的解释,本文将对导出再做浅层解释. 仍然是相同的套路,只不过是反过来而已. 反过来方向理论上本来是这样的:cell-->row-->sheet-->wo ...
- poi excel导入导出
pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artif ...
- Java POI Excel 导入导出
这个东西很容易懂,不是特别难,难就难在一些复杂的计算和Excel格式的调整上. 近期写了一个小列子,放上来便于以后使用. POI.jar下载地址:http://mirror.bit.edu.cn/ap ...
- poi excel导入
poi.jar包 import java.io.File;import java.io.FileInputStream;import java.io.IOException; import org.a ...
- POI Excel 导入导出重点
HSSF是指2007年以前的,XSSF是指2007年版本以上的 这个还是比较好用的,这些总结来自Apache的官方向导的点点滴滴 详细的请参考http://poi.apache.org/spreads ...
- poi excel导入 数字自动加小数点
问题:导入excel表,若表格中为整数数字,不管单元格设置成数字格式还是文本格式,导入时都会出现小数点和0. 我遇到的问题是:一个名称,做测试数据的时候做了纯整形数字,发现了这个问题. 解决办法:在代 ...
- poi excel导入纯数字单元格显示科学计数法的处理
POI读取Excel文件时,对纯数字单元格的处理 用POI读取Excel文件的时候,可能会遇到这样的问题:Excel文件中某一单元格中的数据为数字,例如12345678910123. 正常读取的话 ...
- java poi excel导入模板设置下拉框
import org.apache.poi.hssf.usermodel.DVConstraint; import org.apache.poi.hssf.usermodel.HSSFCell; im ...
随机推荐
- Python之路,第十三篇:Python入门与基础13
python3 模块 模块 Module 概念: 模块是一个保护有一系统变量.函数.类等组成的程序组: 模块是一个文件,模块文件名通常以.py 结尾: 作用:让一些相关的变量,函数, 类等有逻辑的 ...
- pycharm远程服务器进行调试
背景是这样的:我有一台远程的服务器,以及一台本地的电脑:现在我想用远程的服务器上的python编译器来运行代码,怎么办?通用的做法是ssh服务器,vim代码,之后python运行文件,但是如果遇到调试 ...
- markdown-to-html.min.js
直接改成 false 不执行这里 不然异步了
- 后台管理Models
1.后台的配置 登录地址 :http://localhost:8000/admin 创建后台管理员(超级用户): 在终端输入:./manage.py createsuperuser Username ...
- 对于vs出现“This function or variable may be unsafe”
1.项目上右击选择“属性” 2.选择C/C++ ->预处理器 ->预处理器定义 3.添加一行 _CRT_SECURE_NO_WARNINGS 4.点击确定,重新编译成功.
- 将mysql的表导出为excel
1.在表上右键,选择Table Data Export Wizard,选择想要导出的字段,点击next 2.选择导出文件的路径->csv格式->next 3.点击next 4.打开刚才导 ...
- 杭电oj2000-C语言
题目 题目 Problem Description 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符. Input 输入数据有多组,每组占一行,有三个字符组成,之间无空格. Outp ...
- php基础-1
php规范 php文件以<?php开头,以?>结尾. php可以和html代码混写,若当前文件为纯php代码 ,则不用写php结尾 php的一行代码以";"(分号)结尾 ...
- 《DSP using MATLAB》Problem 6.20
先放子函数: function [C, B, A, rM] = dir2fs_r(h, r); % DIRECT-form to Frequency Sampling form conversion ...
- Caused by: java.sql.SQLException: ORA-24816: 在实际的 LONG 或 LOB 列之后提供了扩展的非 LONG 绑定数据
今天客户说报告草稿保存不了,跟踪错误bug,了解到以下reason: 异常出现的环境:oracle11g + Hibernate 错误分析:这是oracle 11g在clob字段中的一个bug,ora ...