使用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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值