POI读取Excel

1 篇文章 0 订阅

POI读取Excel数据生成sql
如果是Java的maven项目可以直接引入依赖。
依赖包:

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
</dependency>

或者到Apache官网下载POI的库,下载链接地址:https://poi.apache.org/download.html,下载后解压,将jar包导入到项目中,如下示例:
下载poi-bin-4.0.1-20181203.zip解压后,得到下面文件:
在这里插入图片描述
把图中的jar文件导入到自己的项目中,就可以使用POI,用Java读Excel表格数据了。

现在要读取一个名为test.xls的文件,内容是这样的:
在这里插入图片描述
写一个Java程序:

public class readExcel {
    public static void main(String[] args) {
        new readExcel ().read();
    }

    public void read() {
        File file = new File("E:\\svn-localfile\\资料\\二\\test.xls");
        //InputStream inputStream = null;
        Workbook workbook = null;
        try {
            //inputStream = new FileInputStream(file);
            //workbook = WorkbookFactory.create(inputStream);
            // 工作表
            workbook = WorkbookFactory.create(file);
            //inputStream.close();
            // 表个数
            int numberOfSheets = workbook.getNumberOfSheets();
            // 遍历表
            for (int i = 0; i < numberOfSheets; i++) {
                Sheet sheet = workbook.getSheetAt(i);
                //总行数
                int rowLength = sheet.getLastRowNum() + 1;
                //根据第一行,获取总列数
                Row row = sheet.getRow(0);
                //总列数
                int colLength = row.getLastCellNum(); //row.getPhysicalNumberOfCells();
                //得到指定的单元格
                Cell EquivalentId = row.getCell(0);
                Cell AliaseName = row.getCell(0);
                Cell AliaseNameEn = row.getCell(0);
                Cell RuleNo = row.getCell(0);
                Cell GoodsName = row.getCell(0);
                Cell SourceId = row.getCell(0);
                Cell DataSourceCode = row.getCell(0);
                System.out.println("行数:" + rowLength + ",列数:" + colLength);

                //读数据
                for (int j= 1; j < rowLength; j++) {
                    // i=1 , 拿到第2行的数据
                    row = sheet.getRow(j);
                    // 获取列的内容
                    EquivalentId = row.getCell(0); //第一个单元格
                    AliaseName = row.getCell(1);  //第二个单元格
                    AliaseNameEn = row.getCell(2); //第三个单元格
                   
                    // insert into TBL_ALIASENAME
                    // 我这里直接打印到控制台了,也可以使用io流写入到文件。
                    System.out.println(
                    "insert into TBL_ALIASENAME(EQUIVALENTID,ALIASENAME,ALIASENAMEEN) VALUES('" + EquivalentId + "','" + AliaseName + "','" + AliaseNameEn + "');"
                    );
                }
            }
            } catch(Exception e){
                e.printStackTrace();
            }
        }

}

得到以下结果:
在这里插入图片描述
另:

//获取单元格各类型值,返回字符串类型
public static String getCellValueByCell(Cell cell) {
    //判断是否为null或空串
    if (cell == null || cell.toString().trim().equals("")) {
        return "";
    }
    String cellValue = "";
    int cellType = cell.getCellType();

    // 以下是判断数据的类型
    switch (cellType) {
        case HSSFCell.CELL_TYPE_NUMERIC: // 数字

            if (0 == cell.getCellType()) {//判断单元格的类型是否则NUMERIC类型
                if (HSSFDateUtil.isCellDateFormatted(cell)) {// 判断是否为日期类型
                    Date date = cell.getDateCellValue();
                    DateFormat formater = new SimpleDateFormat(
                            "yyyy-MM-dd HH:mm");
                    cellValue = formater.format(date);
                } else {
                    cellValue = cell.getNumericCellValue() + "";
                }
            }
            break;
        case HSSFCell.CELL_TYPE_STRING: // 字符串
            cellValue = cell.getStringCellValue();
            break;
        case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
            cellValue = cell.getBooleanCellValue() + "";
            break;
        case HSSFCell.CELL_TYPE_FORMULA: // 公式
            cellValue = cell.getCellFormula() + "";
            break;
        case HSSFCell.CELL_TYPE_BLANK: // 空值
            cellValue = "";
            break;
        case HSSFCell.CELL_TYPE_ERROR: // 故障
            cellValue = "非法字符";
            break;
        default:
            cellValue = "未知类型";
            break;
    }
    return cellValue;
 }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值