zoukankan      html  css  js  c++  java
  • Java读取Excel指定列的数据详细教程和注意事项

    本文使用jxl.jar工具类库实现读取Excel中指定列的数据。

    jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的。这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。

    • 支持Excel 95-2000的所有版本
    • 生成Excel 2000标准格式
    • 支持字体、数字、日期操作
    • 能够修饰单元格属性 支持图像和图表

    jxl操作Excel包括对象Workbook(工作簿),Sheet(工作表) ,Cell(单元格)。一个Excel就对应一Workbook对象,一个Workbook可以有多个Sheet对象,一个Sheet对象可以有多个Cell对象。其主要的API说明如下:

    新建并获取工作薄:

    Workbook workbook = Workbook.getWorkbook(inputStream);

    读取工作表:

    workbook.getSheet(int index);//index从0开始,0对应Sheet1

    获取单元格:

    sheet.getCell(int columnIndex, int rowIndex);

    读取单元格内容:

    cell.getContents();

    代码如下:

    /**
         * 读取excel表格中特定的列
         * 
         * @param file
         *            文件
         * @param index
         *            第index列(0开始)
         * @throws Exception
         */
        public static void readColumn(File file, int index) throws Exception {
            InputStream inputStream = new FileInputStream(file.getAbsoluteFile());
            Workbook workbook = Workbook.getWorkbook(inputStream);
            Sheet sheet = workbook.getSheet(0);
            int rows = sheet.getRows();
            int columns = sheet.getColumns();
            for (int i = 1; i < rows; i++) {
                Cell cell = sheet.getCell(index, i);
                System.out.println(cell.getContents());
            }
        }

    用桌面上的一个Excel文件进行测试:

    public static void main(String[] args) {
            File file = new File("C:\Users\Administrator\Desktop\世界名著.xlsx");
            try {
                System.out.println("正在读取书名...");
                readColumn(file, 0);//读取第一列
                System.out.println("读取完毕");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    奇怪,竟然报错了:

    这是使用jxl时一个需要注意的地方,jxl只支持Excel 95-2000 工作簿(*.xls),不支持Excel 工作簿(*.xlsx)。解决办法是把文件另存为xls的格式,注意一定要打开Excel文件再进行“另存为”操作,直接改后缀名是不可以的!

    注意代码中也要相应的改一下,更改以后进行再次进行测试:

    对比二者,完美!

    由于博主也是在攀登的路上,文中可能存在不当之处,欢迎各位多指教! 如果文章对您有用,那么请点个”推荐“,以资鼓励!
  • 相关阅读:
    热修复之类加载机制总结
    socket之tcp如何维护长连接
    sqlite之多线程处理
    android主线程ActivityThread-转载
    线程之ThreadLocal使用
    图片之压缩总结
    线程之交替执行的实例
    git的最常用命令总结
    sqlite之常见的语句
    activity之分析-3分钟看懂Activity启动流程
  • 原文地址:https://www.cnblogs.com/sgh1023/p/9971109.html
Copyright © 2011-2022 走看看