poi解析excel 怎么读取表头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poi解析excel 怎么读取表头相关的知识,希望对你有一定的参考价值。

可以冻结窗口,以方便看表头,如下方法:
选择表头下面一行,选“窗口”“冻结窗格”即可。
打印在纸上,每张纸前都有表头,选择“文件”“页面设置”“工作表”“顶端标题行”选中表头,再次点击该按纽返回,确定即可。
参考技术A //以xls为格式获取file的IO流
NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("yourFilePath"));
//获取workbook
HSSFWorkbook wb = (HSSFWorkbook) WorkbookFactory.create(fs);
//获取sheet
Sheet sheet = wb.getSheet("yourSheetName");

//主要代码
Row firstRow = sheet.getRow(0); //获取第一行row
int rowSize = firstRow.getPhysicalNumberOfCells(); //获取row的cell数量
String[] keys = new String[rowSize]; 
for (int i = 0; i < rowSize; i++)
    //默认cell为String格式,如果有多种格式,需要自己定义swich条件
    keys[i] = firstRow.getCell(i).getRichStringCellValue().getString();

poi 解析excel问题

java中用poi解析excel时,如果某个cell的值为空时,会将后面不为空的cell前移。如:
id name sex age
1 aaa null 20
这个解析时遍历row的每个cell 就会得到 1 aaa 20 中间为空的那项就没了,如何解决?

解析的时候可以往空值中赋一个特殊值来代替,或是直接赋一个null进去追问

直接加进去个null 不太好看吧

参考技术A 应该是通过逐个单元格进行获取数据的啊,怎么可能获取到1 aaa 20呢?
每个单元格进行解析取值的,是不是你按照行进行取值了?
还是说你想实现将空去除,并将后边数据前移呢?追问

我是想逐个取值,但是Sheet.getRow(i) 获取的一行数据中,如果某个cell为空的话,得到的结果就已经将空值去掉,并且将后面不为空的前移了,这些都是poi包中处理的,关键是我不想这么做,空值我也要

追答

呵呵!看来你还没明白我的意思,为什么要以行为单位来获取呢?为什么不以单元格为单位来获取呢?如果以单元格为单位来获取不就可以了吗?即使是空你也可以获取到!楼上的方法并不是好办法,这样也可以满意回答。呵呵!

参考技术B 没有这种情况出现吧追问

你可以试试看 我是调试的时候发现问题才提问的

以上是关于poi解析excel 怎么读取表头的主要内容,如果未能解决你的问题,请参考以下文章

java使用poi读取excel时,电话号码变成了科学计数法,整数变成double,怎么改过来

poi 解析excel问题

SpringMVC 5.0.4集成easyexcel读取excel文档

用POI解析Excel 出现的不能识别的编码问题

Java对Excel解析(求助)

POI解析Excel之应用反射等技术实现动态读取