使用jxl读取模板文件,写入数据并导出excel

3 篇文章 0 订阅

使用jxl读取模板文件,写入数据并导出excel

我使用的jxl版本是2.6.6, 如果使用高版本可能会有数组越界等异常。

这里为了方便全写在一个main方法里面了。

package com.excel.jxl.readexport;

import com.excel.jxl.model.User;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Boolean;
import jxl.write.*;
import jxl.write.Number;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by susq on 2017-5-30.
 */
public class JxlReadExport {

    private static final int MAX_ROWS = 100;

    public static void main(String[] args) throws IOException, BiffException {
        // 表格要导出的目录
        String outPath = "C:\\Users\\susq\\Desktop\\sheet.xls";
        FileOutputStream is = new FileOutputStream(outPath);
        // 模板文件路径
        String templePath = "C:\\Users\\susq\\Desktop\\模板.xls";
        // 读取模板文件
        Workbook wb = Workbook.getWorkbook(new File(templePath));

        // 根据模板文件创建可写的文件,注意这里是createWorkbook(),创建而不是获取
        WritableWorkbook wwb = Workbook.createWorkbook(is, wb);
        // 注意这里是getSheet(), 通过索引,获取模板文件中的sheet页第一页
        WritableSheet sheet = wwb.getSheet(0);

        for(int i=1; i<=MAX_ROWS; i++) {     // 从第二行开始插入,第一行表头
            User user = new User((long) i, "张三", "14", true, new Date(), new BigDecimal("111112345.6789"));
            // 第一个参数指定单元格的列数、第二个参数指定单元格的行数,第三个指定写的字符串内容
            // 填充数字, import jxl.write.Number;
            Number label1 = new Number(0, i, user.getId());
            // 填充文本
            Label label2 = new Label(1, i, user.getName());
            Label label3 = new Label(2, i, user.getAge());
            // 填充布尔值, import jxl.write.Boolean;
            Boolean label4 = new Boolean(3, i, user.getSex());
            // 填充日期
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String date = sdf.format(user.getCreateTime());
            Label label5 = new Label(4, i, date);
            // 填充格式化的数字, 保留6位小数,不足六位的时候有几位保留几位。非小数部分用千位符隔开
            jxl.write.NumberFormat nf = new jxl.write.NumberFormat("###,###,###.######");
            jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(nf);
            jxl.write.Number label6 = new jxl.write.Number(5, i, user.getSalary().doubleValue(), wcf);

            try {
                sheet.addCell(label1);
                sheet.addCell(label2);
                sheet.addCell(label3);
                sheet.addCell(label4);
                sheet.addCell(label5);
                sheet.addCell(label6);
            } catch (WriteException e) {
                e.printStackTrace();
            }
        }
        try {
            wwb.write();
            wwb.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (WriteException e) {
            e.printStackTrace();
        }
    }
}

主要就是:通过读取的模板文件输出的目标文件得到的文件输出流 创建新的可写的工作簿对象WritableWorkbook wwb。

记得最后write 、 close wwb。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值