使用POI读写Excel

使用POI来读写exccel很方便,但是一开始用的时候有点蒙,这里我将我学习时写的例子给大家分享一下,希望对你学习有点帮助。
顺便说一下,jxl也可以操作excel,如果有兴趣,可以参考:http://blog.csdn.net/liu_005/article/details/49404687

【POI的jar包下载地址:http://download.csdn.net/detail/liu_005/9211493】

【读excel】
其中读excel比较简单,先通过输入流创建工作文件,获取工作簿,通过工作簿获取行,通过行获取单元格,进而获取每个单元格中的内容。不过这里有一点需要考虑下就是你的数据中是否与空行存在,如果有还是要处理下,不然会有空指针异常。

// 利用POI读excel文件
    public static void readExcel() throws IOException
    {
        // System.out.println("in");

        String fileName = "E:/testPoi.xls";// 源文件
        File f = new File(fileName);

        FileInputStream is = new FileInputStream(f);// 创建文件流
        HSSFWorkbook wb = new HSSFWorkbook(is); // 创建工作文件
        HSSFSheet sheet = wb.getSheetAt(0); // 获取第一个工作簿

        int maxRow = sheet.getLastRowNum();// 已写最大行数(从0开始)

        for (int i = 0; i <= maxRow; i++)
        {
            HSSFRow row = sheet.getRow(i);// 获取行

            // 如果数据行中间有空行,可以用这个跳过;如果没有空行,当然这条语句可以删除
            if(row == null)
            {
                continue;
            }

            for (int j = 0; j < row.getLastCellNum(); j++)
            {
                System.out.print(row.getCell(j) + " ");// 获取行中单元格的内容
            }
            System.out.println();
        }

        is.close();
    }

【写excel (包括修改已存在的excle文档)】
在写excel时稍微复杂一点,需要先将已存在的文档(如果是第一次插入数据,可以理解为已存在的文档为空)读入输入流中,构造工作文件。然后获取已写的最大行数,利用最大行数创建下一行和创建行中的每个单元格(根据需要创建),最后将你想要写入文件的内容设置为单元格的值。

// 利用POI写excel文件
    public static void writeExcel(String[][] inStrings) throws IOException
    {
        String fileName = "E:/testPoi.xls";// 源文件
        File f = new File(fileName);

        FileInputStream is = new FileInputStream(f);// 创建文件流
        HSSFWorkbook wb = new HSSFWorkbook(is); // 创建工作文件
        HSSFSheet sheet = wb.getSheetAt(0); // 获取第一个工作簿

        for (int j = 0; j < inStrings.length; j++)
        {
            int nowMaxRow = sheet.getLastRowNum();// 获取目前已写的最大行号(从0开始)
            System.out.println("lastRowNum: " + nowMaxRow);

            HSSFRow row = sheet.createRow(nowMaxRow + 1);// row是工作簿中的一行
            for (int i = 0; i < inStrings[j].length; i++)
            {
                HSSFCell cell = row.createCell(i);// cell是行中的一个单元格
                cell.setCellValue(inStrings[j][i]);
            }
        }

        // 创建输出流
        FileOutputStream fileOut = new FileOutputStream(f);

        // 将写后流写入文件
        wb.write(fileOut);

        // 关闭流
        is.close();
        fileOut.close();
    }

【测试】
以下是一个简单的测试。

public static void main(String[] args) throws IOException
    {
        // 测试写入的时候的输入数据
        String[][] putStrings = { { "90", "y-=", "=--", "y34", "yu74" },
                { "we", "y-=", "=--", "y34", "yu74" },
                { "9d", "fg", "=--", "y34", "yoop4" },
                { "yuui", "yqw", "=--", "ygf", "yu74" }

        };

        // 测试写入
        // writeExcel(putStrings);

        // 测试读出
        readExcel();
    }

你可能感兴趣的:(poi,Excel)