供应商或客户数据导出
一.需求分析
- 点击导出按钮,将供应商或客户的信息导出为excel文档
- 下载到本地,打开导出的excel:
二.POI简介
- Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。
- 用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)
- 结构:
HSSF - 提供读写Microsoft Excel XLS格式档案的功能。XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF - 提供读写Microsoft Word DOC格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读Microsoft Visio格式档案的功能。
HPBF - 提供读Microsoft Publisher格式档案的功能。
HSMF - 提供读Microsoft Outlook格式档案的功能。
三.入门Demo
- 创建工程并引入POI依赖
- 向单元格写值
-注:行和列的索引都是从0开始的,即0行表示实际上的第1行,0列表示第一列(A列) - 设置列宽度
四.后端代码编写
- 添加POI依赖
.在父工程的pom.xml中添加POI的依赖 - 业务逻辑层实现
在ISupplierBiz中添加方法:在SupplierBiz中添加方法的实现:
-
Action层实现
修改SupplierAction,添加export方法:
五.页面代码
- 引入download.js文件
- 添加导出按钮
在crud.js中的grid的工具栏中添加按钮,代码如下
采购销售订单导出
一.需求分析
二.POI样式设置
- 我们可以在示例工程中来完成这些导出的采购订单的模板,将来用到ERP系统里时,可直接把代码直接复制过去就可以用了。
- 画边框线
边框线是属于样式范畴,而样式的作用范围是整个工作簿(包括所有的工作表),因此我们可以工作簿来创建样式,再给样式设置边框线。
创建CreateOrderXls类,代码如下
打开结果文件: - 合并单元格
找出我们需要合并哪些单元格:
1) 第一行是显示订单的标题:比如显示为 “采购订单”,需要合并A、B、C、D列。
2) 第3行的B、C、D列,需要合并成一个单元格,用来显示供应商的名称
3) 第8行,需要合并成一个单元格,用来显示“订单详情 - 设置单元格的值
把采购订单里那些固定的显示文本给填上。在合并单元格代码后添加:
结果如下: - 设置行高和列宽
输出的结果跟我们要的格式还有差距,需要调整一下行高和列宽
代码如下
结果如下: - 设置表格的对齐方式和字体
现在看到对齐方式全都是靠左对齐,需要改成居中,字体的大小也要设置一下
代码如下:
结果: - 设置日期格式
订单表内容中有下单、审核、采购、入库日期。我们也需要设置一下日期格式的显示
代码如下:
测试结果:
三.后端代码实现
- 在IOrdersBiz接口中添加方法exportById
- 在OrdersBiz中实现方法
将示例代码中的创建模板的代码复制过来,删除测试日期
修改创建内容部分的代码,添加rowCnt定义,代表内容部分需要创建的总行数注入EmpDao和SupplierDao,订单中只保留经办人的编号和供应商的编号,需要把它们转成对应的名称
在代码后添加
修改输出流 -
修改OrdersAction,添加exportById方法
四.前端代码实现
- 引入download.js
在orders.html中引入download.js - 修改orders.js
修改弹出订单详情窗口代码:
供应商或客户数据导入
一.需求分析
- 我们需要将批量的供应商(客户)信息导入到系统里,因此我们需要实现导入功能
- 如下图:点击导入按钮
-
弹出导入数据对话框:
-
选择excel文件后点击“导入”按钮,把数据导入到系统中,成功后刷新表格并关闭“导入数据”窗口
二.后端代码实现
- Dao层编写
修改SupplierDao,添加根据名称查询的条件: - 业务逻辑层编写
在ISupplierBiz中添加方法
在SupplierBiz中添加实现 - Action编写
在SupplierAction中添加上传文件的支持:
添加upload方法:
三.前端代码
- 添加导入窗口
- 修改crud.js, 添加导入按钮
- 添加导入窗口的初始化与提交
- ProcessData:
要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型”application/x-www-form-urlencoded”。如果要发送DOM树信息或者其它不希望转换的信息,请设置为false。 - ContentType:
要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为”application/x-www-form-urlencoded”。该默认值适合大多数应用场合