xls
随手写个简单摘要:
POI大家都不陌生,经常拿来解析excel表格。
其中,xls格式的需要使用HSSFWorkbook类来解析,xlsx格式的需要使用XSSFWorkbook格式来解析。
那么如何整合二者呢。
代码目录:
1.传入文件名称,获取workbook对象;
2.使用workbook对象操作excel表格;
3.辅助代码;
一、获取workbook对象<重要代码>
/**
* xls/xlsx都使用的Workbook
*
* @param fileName
* @return
* @author 吕小布 2018年10月26日
*/
public static Workbook readExcel(String fileName){
Workbook wb = null;
if(fileName==null){
return null;
}
extString = fileName.substring(fileName.lastindexof("."));
InputStream is = null;
try {
is = new fileinputstream(fileName);
if(".xls".equals(extString)){
return wb = new HSSFWorkbook(is);
}else if(".xlsx".equals(extString)){
return wb = new XSSFWorkbook(is);
}
} catch (filenotfoundException e) {
e.printstacktrace();
} catch (IOException e) {
e.printStackTrace();
}
return wb;
}
二、使用workbook对象操作excel表格
/**
* Description: 解析excel简单例子
*
* @param fileName
* @author 吕小布 2018年11月7日
*/
public void analyzeDemo(String fileName){
try {
Workbook wb = readExcel(fileName); // 获得excel文件对象workbook
Sheet s = wb.getSheetAt(0); // 获取指定工作表<这里获取的是第一个>
//循环行 sheet.getPhysicalNumberOfRows()是获取表格的总行数
for (int i = 0; i < s.getPhysicalNumberOfRows(); i++) {
System.out.println("第"+(i+1)+"行内容:");
Row row = s.getRow(i); // 取出第i行 getRow(index) 获取第(index+1)行
for (int j = 0;j < row.getPhysicalNumberOfCells(); j++) { // getPhysicalNumberOfCells() 获取当前行的总列数
String value1 = getCellformatValue(row.getCell(0)); //getCell 获取单元格中的内容
System.out.print(value1+"");
}
System.out.println("");
}
} catch (IndexOutOfBoundsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
三、辅助代码,对单元格的内容进行format<可有可无>
/**
* format表格内容
*
* @param cell
* @return
* @author 吕小布 2018年10月26日
*/
public static String getCellFormatValue(Cell cell){
String cellValue = "";
if(cell!=null){
//判断cell类型
switch(cell.getCellType()){
case Cell.CELL_TYPE_NUMERIC:{
cellValue = String.valueOf(cell.getNumericCellValue());
break;
}
case Cell.CELL_TYPE_STRING:{
cellValue = cell.getRichStringCellValue().getString();
break;
}
default:
cellValue = "";
}
}
return cellValue;
}
就此,关键代码全部结束,其余的地方得靠自己啦。
如果有书写错误的地方,或者是有问题的地方请及时评论或者是私信我,以免误导个别萌新。
虽然我也是个萌新。
你好,我叫吕小布。
文章最后发布于: 2018-11-07 17:02:53
相关阅读
下面excel表中有一些人名和地名,现在想让他们按照人名的首字母从A-Z的顺序排列,借用10位明星的名字进行排序。今天,seo实验室小编就
打开excel2007的时候,整个表格打开得特别的慢,这是怎么回事呢。下面让seo实验室小编为你带来2007版的excel表格打开很慢的解决方法
1、首先理解一下“深拷贝”和“浅拷贝”的区别: 浅拷贝:a = b;//a和b中存的是相同的地址,该地址指向堆内存中相同的地方,即a和b就是一
00.JavaScript与HTML之间的交互是通过事实实现的。事件,就是文档或浏览器窗口中发生一些特定的交互瞬间。可以使用处理程序来预
包名说明java.lang该包提供了Java编程的基础类,例如 Object、Math、String、StringBuffer、System、Thread等,不使用该包就很难编写