文档章节

读excel文档

贝克街的亡灵sf
 贝克街的亡灵sf
发布于 2016/06/03 10:38
字数 322
阅读 7
收藏 0

package com.fh.util;

import java.io.File;
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;


/**
 * 从EXCEL导入到数据库
 * 创建人:SF 创建时间:2016年6月23日
 * @version
 */
public class ObjectExcelRead {

    /**
     * @param filepath //文件路径
     * @param filename //文件名
     * @param startrow //开始行号
     * @param startcol //开始列号
     * @param sheetnum //sheet
     * @return list
     */
    public static List<Object> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {
        List<Object> varList = new ArrayList<Object>();

        try {
            File target = new File(filepath, filename);
            FileInputStream fi = new FileInputStream(target);
            HSSFWorkbook wb = new HSSFWorkbook(fi);
            HSSFSheet sheet = wb.getSheetAt(sheetnum);                     //sheet 从0开始
            int rowNum = sheet.getLastRowNum() + 1;                     //取得最后一行的行号

            for (int i = startrow; i < rowNum; i++) {                    //行循环开始
                
                PageData varpd = new PageData();
                HSSFRow row = sheet.getRow(i);                             //行
                int cellNum = row.getLastCellNum();                     //每行的最后一个单元格位置

                for (int j = startcol; j < cellNum; j++) {                //列循环开始
                    
                    HSSFCell cell = row.getCell(Short.parseShort(j + ""));
                    String cellValue = null;
                    if (null != cell) {
                        if(isDecimal(cell)){//判断是否是科学记数法
                            BigDecimal bd = new BigDecimal(cell.getNumericCellValue()); 
                            cellValue= bd.toPlainString();
                        }else{
                            switch (cell.getCellType()) {                     // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库
                            case 0:
                                cellValue = String.valueOf((int) cell.getNumericCellValue());
                                break;
                            case 1:
                                cellValue = cell.getStringCellValue();
                                break;
                            case 2:
                                cellValue = cell.getNumericCellValue() + "";
                                // cellValue = String.valueOf(cell.getDateCellValue());
                                break;
                            case 3:
                                cellValue = "";
                                break;
                            case 4:
                                cellValue = String.valueOf(cell.getBooleanCellValue());
                                break;
                            case 5:
                                cellValue = String.valueOf(cell.getErrorCellValue());
                                break;
                            }
                        }
                        
                    } else {
                        cellValue = "";
                    }
                    
                    varpd.put("var"+j, cellValue);
                    
                }
                varList.add(varpd);
            }

        } catch (Exception e) {
            System.out.println(e);
        }
        
        return varList;
    }
    public static Boolean isDecimal(HSSFCell cell){
        try {
            BigDecimal bd = new BigDecimal(cell.getNumericCellValue()); 
            String str = bd.toPlainString();
            System.out.println(str);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}
 

© 著作权归作者所有

下一篇: 分页
贝克街的亡灵sf
粉丝 2
博文 42
码字总数 21597
作品 0
松江
程序员
私信 提问
Office文档的Java处理包--POI

Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。 结构: HSSF - 提供读写Microsoft Excel XLS格式档案的功能。 XSSF - 提供读写Microsoft...

匿名
2008/09/18
105K
8
Apache POI 3.11-beta1 发布

Apache POI 团队今天发布了 POI 3.11 的第一个 beta 版,该版本新增了一些新功能,同时修复了大量的 bug,且支持的JDK版本升级到了1.6。 主要改进如下: 更多内容请看这里。 Apache POI是一个...

亚当李
2014/08/07
3.2K
12
Apache POI 3.11-beta2 发布

Apache POI 3.11-beta2 发布,更新内容如下: 56812 - XSLF 图像提供一个获取外部链接图片的 URI 54764 - 支持 XML 解析器版本 (Xerces 或者 JVM 内置, XMLBeans 2.6),实施合理的 OOXML 文...

oschina
2014/08/22
1K
2
Apache POI 3.9 发布,性能显著提升

Apache POI 3.9 发布了,该版本显著提升了性能,修复了很多 bug。 Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。 结构: HSSF - 提供读写...

oschina
2012/12/08
14.8K
24
Apache POI 3.7 发布

Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。 结构: HSSF - 提供读写Microsoft Excel XLS格式档案的功能。 XSSF - 提供读写Microsoft...

红薯
2010/11/01
7K
5

没有更多内容

加载失败,请刷新页面

加载更多

HTTP协议无状态,到底要怎么理解?

一,故事 一天,你有个需求,你要去超市买一瓶酱油。 到了超市买了酱油,你告诉售货员,下次给我准备下面粉,我下次来拿。 第二次,你去超市拿面粉,售货员说他不记得你什么时候说要准备面粉...

一代码农码一代
22分钟前
1
0
elk 邮件预警

{ "trigger": { "schedule": { "cron": "0/15 1 * * * ?" } }, "input": { "search": { "request": { "search_type": "query_then_fetch", "indices": [ "heartbeat*" ], "rest_total_hits_a......

internetafei
35分钟前
0
0
从一道面试题谈linux下fork的运行机制

今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译: #include "stdio.h" #include "sys/types.h" #include "unistd.h" in......

linux服务器架构
37分钟前
1
0
AEDPoS合约实现之GetConsensusCommand

正如文章AElf共识合约标准中所述,GetConsensusCommand接口用于获取某个公钥下一次生产区块的时间等信息。 在AEDPoS的实现中,其输入仅为一个公钥(public key),该接口实现方法的调用时间另...

AELF开发者社区
45分钟前
0
0
kotlin中奖概率

fun main() { var wins = 0 var chance = 0.2 var playTime = 10// 1000万次 val n = 10000000 (1..n).forEach { if (play(chance, playTime)) win......

oschina4cyy
47分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部