本人开发阶段,有很多功能都是跟Word,Excel,PPT这些有关,我们有很多POI可用啦实现,在这里我就是用的POI.我这里介绍两种我曾经用到过的方法:
进行Excel/Word等文档的下载方法实现方法
1. 直接使用模板文档丢在自身的服务器上(最简单,最便捷)
将模板文件丢在服务器上的特定的目录上是最简单,最便捷,最使用的方法,不用写什么代码,后期不管怎么变动都不会受到影响(服务器异常,自然环境影响情况除外)
我的做法是:直接把文档放在web项目下,比如:
访问如下:直接在页面上放个按钮:
页面效果:
2. 以代码形式,进行Excel的模板生成
按钮实现
/**
* 下载账单模板(201906版后)
*/
private static final String DOWN_EXCEL = "/admin/phone/downExcel";
/**
* 从服务器固定位置下载账单模板
*
* @return
* @author huaiyan
*/
@RequestMapping(value = DOWN_EXCEL, method = {
RequestMethod.POST, RequestMethod.GET})
public void downExcel() {
try {
long currentTimeMillis = System.currentTimeMillis();
List<Map<String, Object>> list = new ArrayList<>();
// 清空输出流
response.reset();
String name = getLoginUser().getName();
String fileName = "账单模板.xls";
logger.info("PhoneBillController.downExcel info={}", name + "请求下载账单模板...");
String[] columnsName = {
"手机号", "套餐类型", "实际月费", "套餐外通话费", "套餐外流量费", "套餐外短彩信费", "套餐外其他", "小计",
"移动合计", "备注及套餐外其他说明", "公司所属", "开户日期", "POS券日期", "总使用分钟数", "套餐外通话时长", "套餐外短信数", "套餐外流量数", "移动余额"};
String[] key = {
};
ByteArrayOutputStream os = new ByteArrayOutputStream();
ExcelUtil.createWorkBook(list, key, columnsName).write(os);
logger.info("PhoneBillController.downExcel info={}", "开始读取文件到输入流中...");
byte[] content = os.toByteArray();
InputStream is = new ByteArrayInputStream(content);
// 放到缓冲流里面
logger.info