JExcel API使用笔记

JExcel API使用笔记 

JExcel是一个开源的支持excel的java类库,广泛利用其api来生成excel报表 

 

  • 下载JExcel

        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.12</version>
        </dependency>
  • 数据写入到excel文件

从jira中查询数据,导出生成一个搜集用户体验问题的excel报表,并且简单设置表格格式。

 

 @Test
    public void testBugStatistic() throws Exception {
        List<Issue> issues = myJiraClient.getIssues("issuetype = Bug AND BUG类型 = 用户体验 AND assignee in (lifei66) ORDER BY created DESC");

        WritableWorkbook workbook = Workbook.createWorkbook(new File("7Fresh移动端用户体验问题.xls"));
        WritableSheet sheet = workbook.createSheet("用户体验优化建议", 0);

        List<String> titles = Arrays.asList("issueKey", "标题", "报告人", "创建日期", "状态", "链接");
        List<Label> labels = new ArrayList<>();
        for (int i = 0; i < titles.size(); i++) {
            for (int j = 0; j < issues.size() + 1; j++) {
                if (j == 0) {
                    WritableCellFormat titleCellFormat = new WritableCellFormat(new WritableFont(WritableFont.createFont("微软雅黑"), 14, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK));
                    titleCellFormat.setBackground(Colour.VERY_LIGHT_YELLOW);
                    titleCellFormat.setAlignment(Alignment.getAlignment(2));
                    titleCellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.getAlignment(1));
                    titleCellFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);

                    labels.add(new Label(i, j, titles.get(i), titleCellFormat));
                } else {

                    WritableCellFormat dataCellFormat = new WritableCellFormat();
                    dataCellFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
                    switch (titles.get(i)) {
                        case "issueKey":
                            labels.add(new Label(i, j, issues.get(j - 1).getKey(), dataCellFormat));
                            break;
                        case "标题":
                            labels.add(new Label(i, j, issues.get(j - 1).getSummary(), dataCellFormat));

                            break;
                        case "报告人":
                            labels.add(new Label(i, j, issues.get(j - 1).getReporter().getDisplayName(), dataCellFormat));
                            break;
                        case "创建日期":
                            WritableCellFormat dateCellFormat = new WritableCellFormat(new DateFormat("yyyy/MM/dd HH:mm:ss"));
                            dateCellFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);

                            sheet.addCell(new DateTime(i, j, issues.get(j - 1).getCreationDate().toDate(), dateCellFormat));
                            break;
                        case "状态":
                            labels.add(new Label(i, j, issues.get(j - 1).getStatus().getName(), dataCellFormat));
                            break;

                        case "链接":
                            WritableHyperlink hyperlink = new WritableHyperlink(i, j, new URL("http://jira.jd.com/browse/" + issues.get(j - 1).getKey()));
                            Label issueLink = new Label(i, j, "http://jira.jd.com/browse/" + issues.get(j - 1).getKey(), dataCellFormat);
                            hyperlink.setDescription(issueLink.getContents());

                            sheet.addCell(issueLink);
                            sheet.addHyperlink(hyperlink);

                            break;


                    }
                }

            }

        }

        for (Label label : labels) {
            sheet.addCell(label);
        }

        expandColumns(sheet, titles.size());
        workbook.write();
        workbook.close();

    }

    private void expandColumns(WritableSheet sheet, int columnSize) {

        for (int i = 0; i < columnSize; i++) {

            CellView cellView = sheet.getColumnView(i);

            cellView.setAutosize(true);

            sheet.setColumnView(i, cellView);
        }


    }
  • 生成的报表文件:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值