java根据excel模版导出数据详解编程语言
2023-06-13 09:20:47 时间
public static Workbook getWorkbook(String templateFile,
Map Object, Object beans) throws Exception{
XLSTransformer transformer = new XLSTransformer();
Workbook wb = transformer.transformXLS(getAbsoluteIn(templateFile), beans);
return wb;
/***
* 得到绝对文件路径流
* @param path: excel模板路径
* @return
public static InputStream getAbsoluteIn(String path){
File file = new File(path);
InputStream in = null;
try {
in = new FileInputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return in;
}
@RequestMapping(value="downloadT10_report.do",method=RequestMethod.POST) public void export(HttpServletRequest request,HttpServletResponse response){ //获取excel信息 List list = null;//TODO Map Object, Object beans = new HashMap Object, Object (); beans.put("list", list); beans.put("count", list.size()); try { Workbook wb = ExcelExportUtils.getWorkbook(excelTemplatePath, beans); String uplodapath = "D:/temp"; String downLoadFileName = "testexcel.xlsx"; //下载图片到excel downloadImgToExcel(wb, uplodapath, downLoadFileName, response); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); /** * 下载图片到excel * @param wb * @param uplodapath * @param downLoadFileName * @param response private void downloadImgToExcel(XSSFWorkbook wb,String uplodapath,String downLoadFileName,HttpServletResponse response){ //下载图片到excel //begin BufferedImage bufferImg = null; try { //创建作图sheet XSSFSheet sheet1 = null; if(wb.getSheet("echarts")==null){ sheet1 = wb.createSheet("echarts"); }else{ sheet1 = wb.getSheet("echarts"); //循环读取图片插入到excel String filedir = uplodapath + "//" +"reporttpl//"+LoginManager.getUserName(); File file = new File(filedir); if(file.isDirectory()){ String[] files = file.list(); //画图的顶级管理器,一个sheet只能获取一个(一定要注意这点) XSSFDrawing patriarch = sheet1.createDrawingPatriarch(); int i = 0; int rowbegin = 1; int rowend = 18; for(String _file : files){ if("png".equals(_file.substring(_file.lastIndexOf(".")+1))){ ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); bufferImg = ImageIO.read(new File(filedir + "//" + _file)); ImageIO.write(bufferImg, "png", byteArrayOut); //anchor主要用于设置图片的属性 XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255,(short) 1, rowbegin, (short) 11, rowend); //插入图片 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PNG)); i++; rowbegin = i*18+1; rowend = rowbegin + 18; response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downLoadFileName, "GBK")); OutputStream out = response.getOutputStream(); // 写入excel文件 wb.write(out); out.close(); wb.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); //end }
@RequestMapping(value="downloadT10_report.do",method=RequestMethod.POST) public void export(HttpServletRequest request,HttpServletResponse response){ //获取excel信息 List list = null;//TODO Map Object, Object beans = new HashMap Object, Object (); beans.put("list", list); beans.put("count", list.size()); try { Workbook wb = ExcelExportUtils.getWorkbook(excelTemplatePath, beans); String uplodapath = "D:/temp"; String downLoadFileName = "testexcel.xlsx"; //下载图片到excel downloadImgToExcel(wb, uplodapath, downLoadFileName, response); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); /** * 下载图片到excel * @param wb * @param uplodapath * @param downLoadFileName * @param response private void downloadImgToExcel(XSSFWorkbook wb,String uplodapath,String downLoadFileName,HttpServletResponse response){ //下载图片到excel //begin BufferedImage bufferImg = null; try { //创建作图sheet XSSFSheet sheet1 = null; if(wb.getSheet("echarts")==null){ sheet1 = wb.createSheet("echarts"); }else{ sheet1 = wb.getSheet("echarts"); //循环读取图片插入到excel String filedir = uplodapath + "//" +"reporttpl//"+LoginManager.getUserName(); File file = new File(filedir); if(file.isDirectory()){ String[] files = file.list(); //画图的顶级管理器,一个sheet只能获取一个(一定要注意这点) XSSFDrawing patriarch = sheet1.createDrawingPatriarch(); int i = 0; int rowbegin = 1; int rowend = 18; for(String _file : files){ if("png".equals(_file.substring(_file.lastIndexOf(".")+1))){ ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); bufferImg = ImageIO.read(new File(filedir + "//" + _file)); ImageIO.write(bufferImg, "png", byteArrayOut); //anchor主要用于设置图片的属性 XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255,(short) 1, rowbegin, (short) 11, rowend); //插入图片 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PNG)); i++; rowbegin = i*18+1; rowend = rowbegin + 18; response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downLoadFileName, "GBK")); OutputStream out = response.getOutputStream(); // 写入excel文件 wb.write(out); out.close(); wb.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); //end }
根据模版导出数据要求模版必须是excel2007,2003版的不支持
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16376.html
cjava相关文章
- JAVA导出EXCEL实现
- excel宏 java,Microsoft Excel宏运行Java程序
- java locale 中国_Java描述语言、国家和地理的类——Locale
- 反应java程序并行机制的特点_Java语言具有许多优点和特点,下列选项中能反映Java程序并行机制特点的是()。…[通俗易懂]
- java获取服务器路径_JAVA获取服务器路径的方法「建议收藏」
- java 读取字符串文件_Java读取文件为字符串
- 接了个变态需求:生成 Excel + PDF 导出,用 Java 怎么实现?
- Deep Java Library_java atomicinteger
- java 数字信封_【Java密码学】使用Bouncy Castle生成数字签名、数字信封
- Java实现pdf和Excel的生成及数据动态插入、导出
- Java导出excel工具类详解编程语言
- Java中使用poi导入、导出Excel详解编程语言
- java poi导出带有多个sheet页的excel详解编程语言
- 深入浅出:利用Java操作MySQL(java操作mysql)
- 报表 MySQL导出Excel数据报表的指南(mysql导出excel)
- MySQL数据导出Excel快速教程(mysql转excel)
- 快速上手:Java连接Mongodb数据库(java连接mongodb数据库)
- Java无法连接Redis服务器(java连不上redis)
- 文件Linux下快速导出Excel文件(linux导出excel)
- key操作使用Java操作Redis中的过期key(redisjava过期)
- 轻松导出:用SQL Server批量将数据导出到Excel(sqlserver导出excel)
- Java与MySQL共同构建良好的数据表(java mysql 表)
- Oracle数据快速导出至Excel表格(oracle导出excel)
- Linux与Java结合:开启全新的编程之旅(linux java())
- Java锁表与Oracle数据库协调实现数据安全(java锁表oracle)
- Java导出Oracle数据提升数据分析流程效率(java导出oracle)
- Excel数据快速导入Oracle数据库(excel入oracle)
- 缓存使用Redis让Java代码更加迅速缓存设置(redis设置java)