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

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro