1、接到了一个老项目的项目改造,增加房屋普查信息的功能,主要是下载Excel模板,然后在模板填写数据,在导入。还一个是根据模板写入数据下载到本地。
2、老版本的玩意网上都不好找咋玩。

1、标题第一步看看easyexcel-1.1.2-beta5.jar这个玩意依赖哪些库,统统下载导入进来



maven库给你贴上,你想咋下载就咋下载

https://mvnrepository.com/

2、下面上正菜
/**
* 这个用来实现前端上传数据Excel文件后台读取http流获取数据入库
* 我这里使用的是jfinal框架
*/
public void importData() {UploadFile uploadFile = getFile("excelFile");SurveyDataListener surveyDataListener = newSurveyDataListener(getCurrentUser().getStr("USER_NO"));BufferedInputStream fis = null;try {fis = new BufferedInputStream(new FileInputStream(uploadFile.getFile()));} catch (FileNotFoundException e) {throw new ServiceException("文件流获取异常!");}EasyExcelFactory.readBySax(fis,new com.alibaba.excel.metadata.Sheet(1, 1),surveyDataListener);
}

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.goodcol.util.AppUtils;
import com.goodcol.util.LoggerUtil;
import com.goodcol.util.log.Logger;
import com.goodcol.util.log.LoggerConsole;
import com.jfinal.plugin.activerecord.Db;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** @Description 处理建筑普查信息excel文件监听器* @Author shaoqi* @Date 2021/10/12*/
public class SurveyDataListener extends AnalysisEventListener<List<String>> {public LoggerConsole log = Logger.getLogger(); // 记录日志用private List<Object[]> list = new ArrayList<Object[]>();private final int fileSize = 96;//字段数量private final int maxLength = 20;//读取20列入库一次private String userNo;public SurveyDataListener(String user){this.userNo = user;}@Overridepublic void invoke(List<String> buildSruveyModel, AnalysisContext analysisContext) {if(list.size() > maxLength){int sum = saveData(list);list.clear();}List<String> temp = new ArrayList<>();temp.add(AppUtils.getStringSeq());temp.addAll(1, buildSruveyModel);list.add(temp.toArray(new Object[fileSize]));}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {int sum = saveData(list);log.info("[建筑普查信息excel导入数据]成功数量:" + sum);list.clear();}public int saveData(List<Object[]> params){if(params != null && params.size() > 0){Object[][] args = new Object[params.size()][fileSize];for (int i=0,size=params.size(); i<size; i++){args[i] = params.get(i);}String sql = "insert into (字段) values (?)";int[] result = Db.batch(sql, args, params.size());int sum = Arrays.stream(result).sum();return sum;}return 0;}
}
3、下载模板

 public void downLoadTemplate(){final String srcRelativePath = "template/";final String finalTemplateName = "data_import.xlsx";try {String filename = null;log.info("charset:" + Charset.defaultCharset().name());filename = new String(finalTemplateName.getBytes(), Charset.defaultCharset().name());String resourcePath = srcRelativePath + filename;URL url = getClass().getClassLoader().getResource(resourcePath);log.info("resourcePath:" + resourcePath);File srcFile = new File(url.toURI());renderFile(srcFile);} catch (UnsupportedEncodingException e1) {throw new ServiceException("模板获取异常,异常编码");} catch (URISyntaxException e) {throw new ServiceException("下载导入模板失败,原因:【" + e.getMessage() + "】", e);}}
4、导出Excel数据

我这里使用的是 jxl.jar 操作Excel表格

public void exportExcelData(){String fwmc = getPara("fwmc");String selectSql = "select * from t_aqjd_pcxx where 1=1 ";List<String> strList = new ArrayList<String>();if (AppUtils.StringUtil(fwmc) != null) {selectSql += " and fwmc  like  ?";strList.add("%" + fwmc +"%" );}List<Record> list = Db.find(selectSql, strList.toArray());if(list != null && list.size() > 0){final String srcRelativePath = "template/";final String finalTemplateName = "既有建筑清查情况汇总表.xlsx";HttpServletResponse response = getResponse();response.setCharacterEncoding("UTF-8");response.setContentType("application/octet-stream;charset=UTF-8");try {String filename = new String(finalTemplateName.getBytes(), Charset.defaultCharset().name());String resourcePath = srcRelativePath + filename;log.info("resourcePath:" + resourcePath);URL url = getClass().getClassLoader().getResource(resourcePath);File srcFile = new File(url.toURI());jxl.Workbook book= jxl.Workbook.getWorkbook(new FileInputStream(srcFile));response.addHeader("Content-Disposition", "attachment;fileName=" + new String(finalTemplateName.getBytes("utf-8"), "iso-8859-1"));WritableWorkbook wwb = Workbook.createWorkbook(response.getOutputStream(), book);WritableSheet sheet = wwb.getSheet(0);for(int a=0,aSize=list.size(); a<aSize; a++){Record one = list.get(a);Label labelTag = new Label(0, a+6, String.valueOf(a+1));//44列sheet.addCell(labelTag);Object[] values = one.getColumnValues();String[] fileds = new String[]{"FWMC","FWDZ","JDSQ","FWCQR","CQDJ","JZYT","SFBHXJZ","SFBHXJZ","SFBHXJZ","SFBHXJZ","SFBHXJZ","SFZYSJJZ","JZMJ","JZGD","DSCS","DXCS","TS","JZSJ","JGLX","LMLX","WMLX","WQBWXS","SFCYJGZ","YWMXLHQXBXD","KZJGSJ","YWWYGL","XQGZSJ","YWGZKJ","YWGZKJ","YWGZKJ_SJDW","YWGZKJ_SGDW","FWJZLX","YDXK","GHXK","SGXK","JGYS","YTBG","XFYS","GSDJ","TZHYXK","JGAQPCJL","WJJL","WFWGSPJL"};for(int b=0; b<fileds.length; b++){if(b == 6){//是否保护性建筑Label label7 = new Label(7, a+6, "");Label label8 = new Label(8, a+6, "");Label label9 = new Label(9, a+6, "");Label label10 = new Label(10, a+6, "");Label label11 = new Label(11, a+6, "");if(fileds[6] != null){String build = one.getStr(fileds[6]);if(build == null){}else if(build.equals("否")){label7.setString(build);}else if(!build.equals("")){switch (build){case "全国重点文保建筑":label8.setString("是");break;case "省级文保建筑":label9.setString("是");break;case "市县级文保建筑":label10.setString("是");break;case "历史建筑":label11.setString("是");break;}}sheet.addCell(label7);sheet.addCell(label8);sheet.addCell(label9);sheet.addCell(label10);sheet.addCell(label11);b = 11;}}else if(b == 27){//有无改建扩建Label label29 = new Label(28, a+6, "");Label label30 = new Label(29, a+6, "");String extendBuild = one.getStr(fileds[28]);if(extendBuild != null){if(extendBuild.equals("有")){label29.setString("有");}else if(extendBuild.equals("无")){label30.setString("无");}}sheet.addCell(label29);sheet.addCell(label30);b = 29;}Label label = new Label(b+1, a+6, one.getStr(fileds[b]));//44列sheet.addCell(label);}}wwb.write();wwb.close();renderNull();} catch (UnsupportedEncodingException | URISyntaxException | FileNotFoundException e) {throw new ServiceException("[房屋普查信息]导出Excel数据:模板文件读取异常!");} catch (BiffException | IOException | WriteException e){throw new ServiceException("[房屋普查信息]导出Excel数据:导出数据Excel数据异常!");}}else{renderSuccessJsonMsg("没有符合条件的数据需要导出!");}}
打完了下班吧

easyexcel-1.1.2-beta5.jar实现Excel数据导入及根据模板Excel导出数据(Jfinal框架)相关推荐

  1. oracle 导入excel时间格式,excel表格导入时间数据库中-excel导入数据库,我的日期是datatime()自动生成......

    如何将excel表格数据导入到oracle数据库对应的表中? 假定a1是你的mysql中的时间戳,要在B1取得普通的时间表示,则b1= =25569 A1*0.0000115743621516652 ...

  2. 利用docxtpl库将excel里的数据向一个word模板里填充数据,并保存为一个word文档

    ###程序功能说明:该功能是将excel里的数据向一个word模板里填充数据,并保存为一个word文档. from docxtpl import DocxTemplate import openpyx ...

  3. Java导出Excel模板,导出数据到指定模板,通过模板导入数据(一)

    本文章主要是介绍阿里巴巴的easyexcel的使用 1. 首先需要我们导入easyexcel的依赖包 <!-- alibaba/easyexcel 使用高版本,低版本string接收数字丢小数位 ...

  4. txt 乱码_STATA数据导入——将TXT、EXCEL、SAS、SPSS数据/批量导入STATA

    作者:Misszhou早早早 邮箱:zlr1220@126.com 使用Stata进行数据分析时面临的第一个问题是如何将各种类型的数据转换为dta.格式,导入的途径主要有以下几种: Stat/Tran ...

  5. matlab导入word数据,如何将Excel数据导入MATLAB中?/excel数据导入word模板

    如何将Excel数据导入MATLAB中? 从excel中导入,可以用xlsread()函数. 例如: A=xlsread('C:\Users\Administrator\Desktop\07-29预. ...

  6. excel文件导入hive乱码_把数据库数据导出到excel

    SQL Server BI Step by Step 2--- 使用SSIS进行简单的数据导入导出 让我们首先开始学习SSIS吧,利用SSIS把SQL Server中的数据导出.首先,打开Vs.net ...

  7. matlab excel导入矩阵,如何将excel中数据导入到matlab中!Excel导入matlab生成矩阵

    如何将excel中数据导入matlab并存入数组中 使用Matlab中的Excel Link就可以了. 如果使用Excel 2003版本,操作如下: 1 打开Excel. 2 在菜单栏中选择→加载项→ ...

  8. 如何将excel表格导入word_如何把EXCEL表格形式的通讯录批量导入到手机通讯录中?...

    每个单位都会有一份EXCEL表格的通讯录,如果我们新到一个单位,想要一一保存所有人的手机号码并不是一件简单的事情.(除非单位人很少,否则会很头疼) 那么,我们怎么利用EXCEL表格快速地把姓名和号码等 ...

  9. Php生成货运交接单excel表,PHPExcel读取文件excel模板文件导出数据信息

    在使用PHPExcel导出数据的时候,我们会碰到有时候导出的excel的格式是比较复杂的,所以我们可以通过一个excel预先排版好的模板文件,用户PHPExcel读取该文件,填充内容就行了,这样处理非 ...

最新文章

  1. 10 款可以找回删除文件的好软件
  2. resamplingEnabled属性
  3. mysql自连接查询去重_MySQL命令汇总
  4. 关于c++的一些案例
  5. 人生历练必备的十个心态(图)
  6. php 去掉实体,用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出...
  7. x86平台堆栈优化问题
  8. Lubuntu16.4.3定制教程
  9. shop--8.店铺管理页面的开发
  10. 斯诺登:澳大利亚的监视政策比NSA还下流
  11. Word引用参考文献
  12. 一学就会的虚拟化技术之hyper-v桌面虚拟化
  13. square在matlab是什么意思,square是什么意思
  14. expdpimpdp使用remap
  15. Linux-京东字节百度提前批,一面二面都被问到了awk——实例篇(3)查进程,kill指定进程
  16. 个人建站赚钱的5种常见方法
  17. 以太坊Ropsten测试网合并意味着什么?
  18. 阳光教练隐私政策URL
  19. Telegram为TON网络推出新的编程语言
  20. 讯飞:糖尿病遗传风险预测Coggle挑战赛公开

热门文章

  1. 在校大学生如何做一个自己的网站实践。
  2. excel 复制数据 sql server 粘贴_一个Excel妙招,一个SQL技巧,解决批量数据插入问题
  3. 【Python】 利用汽车数据进行可视化分析
  4. 自定义QGraphicsItem实现平移、改变尺寸和旋转
  5. 国外医疗机器人研究机构
  6. 恋上自由精彩的人生旅途
  7. 元年SecDevOps的实践之路
  8. 移动屋顶使用在别墅中的8大好处
  9. toString函数的重写(JavaScript)
  10. 微信图片上传检测图片是否含有违禁内容