EAS BOS 自定义导出(含Excel样式设置、多页签导出、导出文件目录校验及备份)

本文主要是介绍EAS BOS 自定义导出(含Excel样式设置、多页签导出、导出文件目录校验及备份),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天给大家分享一段关于EAS BOS自定义导出的开发。

功能背景:

叙事界面调用此类:

    /**
     * 调用案例
     * 在需要调用的界面  onload方法中添加
     * ExcelExport.getExcelExport(tblMain, toolBar);
     * 
     */

相关常用功能:

1:常用Excel样式设置

2:Excel多页签导出,后续补上对应多线程导出

2:Excel导出目录检查

3:导出备份

 

/*** */
package com.kingdee.eas.custom.test.client;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.swing.JFileChooser;import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.hssf.util.HSSFColor;import com.ibm.as400.util.commtrace.Data;
import com.kingdee.bos.ctrl.kdf.table.IRow;
import com.kingdee.bos.ctrl.kdf.table.KDTable;
import com.kingdee.bos.ctrl.swing.KDToolBar;
import com.kingdee.bos.ctrl.swing.KDWorkButton;
import com.kingdee.bos.ui.face.UIRuleUtil;
import com.kingdee.eas.cp.odm.web.ChooseRedHeadBean;
import com.kingdee.eas.util.client.EASResource;/*** @author gectan* 2018.12.10* excel导出*/
public class ExcelExport {/*	常用组件:HSSFWorkbook                      excel的文档对象HSSFSheet                         excel的表单HSSFRow                           excel的行HSSFCell                          excel的格子单元HSSFFont                          excel字体HSSFDataFormat                    日期格式HSSFHeader                        sheet头HSSFFooter                        sheet尾(只有打印的时候才能看到效果)样式:HSSFCellStyle                       cell样式辅助操作包括:HSSFDateUtil                        日期HSSFPrintSetup                      打印HSSFErrorConstants                  错误信息表*//*** 调用案例* 在需要调用的界面  onload方法中添加* ExcelExport.getExcelExport(tblMain, toolBar);* *//*** @author gectan * 2018-12-11* 参数 tblMain  表编辑器名称* 参数 toolBar  工具栏* */public static void getExcelExport(final KDTable tblMain, KDToolBar toolBar){KDWorkButton btnExport = new KDWorkButton();btnExport.setIcon(EASResource.getIcon("imgTbtn_output"));btnExport.setToolTipText("自定义导出");btnExport.setText("自定义导出");toolBar.addRightComponent(btnExport, 20);btnExport.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {//setExcelExporter(tblMain);setExcelExporter1(tblMain);}});}/**   * @Title: setExcelExporter1   * @Description: TODO(个人Excel导出测试类,勿用)   * @param: @param tblMain      * @return: void      * @throws   */protected static void setExcelExporter1(KDTable tblMain) {Date date = new Date();//注意日期格式是HH-mm-SS,不是HH:mm:SS   Excel文件名不允许有":"SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-SS");  String now = sdf.format(date);//获取用户选择的导出路径String url = null ;String dec = null ;JFileChooser chooser = new JFileChooser();chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//设置只能选择目录int returnVal = chooser.showOpenDialog(null);if(returnVal == JFileChooser.APPROVE_OPTION) {url =chooser.getSelectedFile().getPath() ;}String  srcfile = url + "\\Excel导出测试根目录";String  fileLog = url + "\\Excel导出测试根目录\\导出备份";File fileParent = new File(srcfile);File exportLog = new File(fileLog);if(!fileParent.exists()){fileParent.mkdirs();   //创建文件夹  exportLog.mkdirs();}url = srcfile + "\\Excel导出测试.xls";dec = fileLog + "\\Excel导出测试("+now+").xls";//创建HSSFWorkbook对象(excel的文档对象)HSSFWorkbook workBook = new HSSFWorkbook();//设置字体样式HSSFFont font = workBook.createFont();font.setColor(HSSFColor.RED.index);                 // 颜色font.setFontHeightInPoints((short) 15);             // 字体大小font.setFontName("仿宋_GB2312");                     // 字体font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);     // 加粗font.setItalic(true);                               // 设置斜体font.setUnderline(HSSFFont.U_SINGLE);               // 设置下划线//设置单元格样式HSSFCellStyle cellStyle = workBook.createCellStyle();cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);   //左边框cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);    //上边框cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);  //右边框cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY);cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);   //cellStyle.setFillForegroundColor(HSSFColor.RED.index);           //设置前景色 cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);    //设置背景颜色    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中//设置日期格式  其他类型的字段,也在cellStyle下设置//cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(“m/d/yy h:mm”));  cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 上下居中//建立新的sheet对象(excel的表单)HSSFSheet sheet = workBook.createSheet("页签1");       //创建工作表(Excel页签)sheet.setDefaultRowHeightInPoints(10);                //设置行高HSSFRow row = sheet.createRow(0); //创建Excel的第一行row.createCell(0).setCellValue("Excel导出测试");        //给第一行的单元格赋值       row.getCell(0).setCellStyle(cellStyle);              //设置单元格样式row.getCell(0).getCellStyle().setFont(font);         //设置字体格式   (注意:字体样式写在单元格样式后)//row1.setRowStyle(cellStyle);                       //将样式应用到行,但有些样式只对单元格起作用//合并单元格          构造参数依次为起始行,截至行,起始列, 截至列sheet.addMergedRegion(new CellRangeAddress(0,0,0,5));HSSFRow row0 = sheet.createRow(1);row0.createCell(0).setCellValue("列1");row0.createCell(1).setCellValue("列2");row0.createCell(2).setCellValue("列3");row0.createCell(3).setCellValue("列4");row0.createCell(4).setCellValue("列5");row0.createCell(5).setCellValue("列6");HSSFRow row1 = sheet.createRow(2);row1.createCell(0).setCellValue("值1");row1.createCell(1).setCellValue("值2");row1.createCell(2).setCellValue("值3");row1.createCell(3).setCellValue("值4");row1.createCell(4).setCellValue("值5");row1.createCell(5).setCellValue("值6");HSSFSheet sheet1 = workBook.createSheet("页签2");HSSFRow row10 = sheet1.createRow(0);row10.createCell(0).setCellValue("列11");row10.createCell(1).setCellValue("列12");row10.createCell(2).setCellValue("列13");HSSFRow row11 = sheet1.createRow(1);row11.createCell(0).setCellValue("值1");row11.createCell(1).setCellValue("值2");row11.createCell(2).setCellValue("值3");FileOutputStream fileOut = null ;try {File srcFile = new File(url);File decFile = new File(dec);if(srcFile.exists()){  //当文件已存在时,//处理方式二://将Excel复制到指定地方在创建新的Excel。cutFile(srcFile, decFile);//处理方式一://删除原有 。导出时,最好关闭原有的Excel,并且打卡新导出的Excel时,最好刷新下当前文件夹,以为重复操作有时会存在缓存。srcFile.delete();   }fileOut = new FileOutputStream(srcFile);workBook.write(fileOut);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally{try {fileOut.close();} catch (IOException e) {e.printStackTrace();}}}/*** * @Title: cutFile   * @Description: TODO(文件剪切)   * @param: @param src   源文件* @param: @param dec   目标文件  * @return: void      * @throws*/public static void cutFile(File src, File dec){FileOutputStream fileOutputStream = null ;InputStream inputStream = null;byte[] bytes = new byte[1024];int temp = 0;try {inputStream = new FileInputStream(src); fileOutputStream = new FileOutputStream(dec);while((temp = inputStream.read(bytes)) != -1){fileOutputStream.write(bytes, 0, temp);fileOutputStream.flush();} } catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally{if(inputStream != null){try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (fileOutputStream != null) {try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}}}

 

 


 

 


 

这篇关于EAS BOS 自定义导出(含Excel样式设置、多页签导出、导出文件目录校验及备份)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/814707

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

MySQL容灾备份的实现方案

《MySQL容灾备份的实现方案》进行MySQL的容灾备份是确保数据安全和业务连续性的关键步骤,容灾备份可以分为本地备份和远程备份,主要包括逻辑备份和物理备份两种方式,下面就来具体介绍一下... 目录一、逻辑备份1. 使用mysqldump进行逻辑备份1.1 全库备份1.2 单库备份1.3 单表备份2. 恢复