必威体育Betway必威体育官网
当前位置:首页 > IT技术

Java POI 解析Excel(xls、xlsx格式同时支持)

时间:2019-10-31 02:45:46来源:IT技术作者:seo实验室小编阅读:66次「手机版」
 

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中数据按照一定顺序排列的操作方法

下面excel表中有一些人名和地名,现在想让他们按照人名的首字母从A-Z的顺序排列,借用10位明星的名字进行排序。今天,seo实验室小编就

excel2007打开很慢怎么办

打开excel2007的时候,整个表格打开得特别的慢,这是怎么回事呢。下面让seo实验室小编为你带来2007版的excel表格打开很慢的解决方法

javascript中数组和对象的深拷贝和浅拷贝

1、首先理解一下“深拷贝”和“浅拷贝”的区别: 浅拷贝:a = b;//a和b中存的是相同的地址,该地址指向堆内存中相同的地方,即a和b就是一

13.事件——JavaScript高级程序设计(笔记)

00.JavaScript与HTML之间的交互是通过事实实现的。事件,就是文档或浏览器窗口中发生一些特定的交互瞬间。可以使用处理程序来预

Java.lang包util包等各个包详解

包名说明java.lang该包提供了Java编程的基础类,例如 Object、Math、String、StringBuffer、System、Thread等,不使用该包就很难编写

分享到:

栏目导航

推荐阅读

热门阅读