如何从Excel文件创建在线预算报告

Issues when publishing an Excel file

我在财务团队中的同事米歇尔(Michelle)有一份日常工作。 她必须每周发布一次预算报告。 以前,她不得不从数据库查询预算数据。 然后,将预算数据手动填写到模板表中,如下所示:

template

由于这是一项常规任务,我觉得我可以通过自动执行数据归档过程来为她提供帮助,这样她就不必手动和重复进行此操作。

另一个问题是她一直以附件形式发布预算报告。 读者必须下载文件才能在支持Excel的设备上查看内容。 另外,很难控制附件的发送目的地,她必须先删除所有敏感和原始数据,然后再将其发送出去。

To solve the above issues, I created a web page with a web spreadsheet component, Keikai. Keikai allows me to reuse the existing Excel budget template so that I don’t need to create everything from scratch. It is also important that I can control it with Java.

Load the template file first

To start simple, I loaded the Excel template sheet into Keikai to show it in a browser:
Imgur

Such page was created by ZUL, an XML format language from ZK framework:

<spreadsheet id="ss" height="100%" width="100%" src="/WEB-INF/books/budget.xlsx"
    maxVisibleRows="150" maxVisibleColumns="40"
    showContextMenu="true" showToolbar="true" showSheetbar="true" 
    showSheetTabContextMenu="true" showFormulabar="true"/>

But you can also use Keikai with JSP.

标签,<spreadsheet>代表Keikai电子表格,我可以通过标签属性配置Keikai。

When a user visits http://localhost:8080/database.zul, keikai will respond with a set of javascript and CSS and render the content file in the browser.

Data Access Object

为了从数据库中加载数据,我创建了Expense.java存储每个记录并ExpenseDao.java查询和更新数据库。

Create a controller to populate data

接下来,我实现了一个Java控制器类来填充数据库中的数据。 控制器必须扩展选择器合成器这样就可以注入试算表我的对象。

public class BudgetComposer extends SelectorComposer<Component> {
    @Wire
    private Spreadsheet spreadsheet;
    ...
}

@线可以注入试算表页面上的对象,这就是为什么我没有调用任何类似的构造函数的原因new 试算表()。

Range API

然后,我需要将数据设置为范围。 一范围对象可以代表一个或多个单元格/行/列,甚至一张。 我可以得到一个范围使用工厂方法的对象范围s.range(Sheet targetSheet, int rowIndex, int columnIndex)。 例如,范围s.range(currentSheet, 0, 0)代表A1。

要显示单元格中的数据,只需调用range.setCellValue()。 因此,代码非常简单。 查询完列表后费用,我可以像这样在循环中将数据填充到单元格中:

private void fillExpenses(List<Expense> list) {
    for (int i = 0; i < list.size(); i++) {
        Expense expense = list.get(i);
        Ranges.range(spreadsheet.getSelectedSheet(), START_ROW + i, 1)
            .setCellValue(expense.getQuantity());
        Ranges.range(spreadsheet.getSelectedSheet(), START_ROW + i, 2)
            .setCellValue(expense.getSubtotal());
    }
}

Result

I was able to quickly turn my colleague’s manual Excel routine into an automated Web app. Now whenever we access the budget report page, Keikai queries the data and displays
it within the report template like:

Try it yourself

If you find this article interesting, there are more examples and demos on Keikai’s website. Or you can run the example project on github.

from: https://dev.to//hawkchen/how-i-created-an-online-budget-report-from-excel-files-g3g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值