zoukankan      html  css  js  c++  java
  • java使用poi.3.10读取excel 2003 (xls格式)

      最近在做一个Excel导入数据库的案例,整理文档出来供大家参考。

    1、下载 最新的 poi  

     
    2、解压 把相关jar包引进项目
     
    3、案例源码
     
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.text.DecimalFormat;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    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;
    import org.junit.Test;
    
    public class TestExcel {
        // 记录类的输出信息­
        static Log log = LogFactory.getLog(TestExcel.class);
        // 获取Excel文档的路径
        public static String filePath = TestExcel.class.getResource("/test.xls").getPath();
    
        @Test
        public static void main(String[] args) {
            try {
                // 创建对Excel工作簿文件的引用
                HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(
                        filePath));
                // 在Excel文档中,第一张工作表的缺省索引是0
                // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
                HSSFSheet sheet = wookbook.getSheet("Sheet1");
                // 获取到Excel文件中的所有行数
                int rows = sheet.getPhysicalNumberOfRows();
                // 遍历行,索引从0 开始,第0行可用作表头,不获取。
                for (int i = 1; i < rows; i++) {
                    // 读取左上端单元格
                    HSSFRow row = sheet.getRow(i);
                    // 行不为空
                    if (row != null) {
                        // 获取到Excel文件中的所有的列
    //                    int cells = row.getPhysicalNumberOfCells();
                        String value = "";
                        // 遍历列
    
                        // 防止当使用POI处理excel的时候cell.getNumbericCellValue()
                        // 当长度大一点的时候会变成科学计数法形式。
                        DecimalFormat df = new DecimalFormat("0");
                        // ***下方3为cells的值,更换为固定列数,解决空值问题***
                        for (int j = 0; j < 5; j++) {
                            // 获取到列的值
                            HSSFCell cell = row.getCell(j);
                            if (cell != null) {
                                switch (cell.getCellType()) {
                                case HSSFCell.CELL_TYPE_FORMULA:
                                    break;
                                case HSSFCell.CELL_TYPE_NUMERIC:
                                    value += df.format(cell.getNumericCellValue())
                                            + ",";
                                    break;
                                case HSSFCell.CELL_TYPE_STRING:
                                    value += cell.getStringCellValue() + ",";
                                    break;
                                default:
                                    value += "#"+",";
                                    break;
                                }
                            } else {
                                value += "#" + ",";
                            }
                        }
                        // 将数据插入到mysql数据库中
                        String[] val = value.split(",");
    
                        System.out.println(val[0]);
                        System.out.println(val[1]);
                        System.out.println(val[2]);
                        System.out.println(val[3]);
                        System.out.println(val[4]);
                        System.out.println(" ");
                        // *******在此处保存数据到数据库******
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    这个方法只能读取Excel2003版本,读取2010版本本人正在学习中。

     
  • 相关阅读:
    C#多线程学习笔记(三)——线程池
    html解析工具
    怎么样获取手机的主题
    我改进的《豆瓣搜》前后对比及源代码
    【收藏】Silverlight Style (二) 自定义样式在后台代码中应用
    C#多线程学习笔记(一)
    学习Linux——学习正确的思考方式(转)
    电信禁路由上网的破解方法
    印度软件业
    中国与印度软件工程师之比较
  • 原文地址:https://www.cnblogs.com/hehaiyang/p/4113544.html
Copyright © 2011-2022 走看看