因NC中提供的导入导出功能不能够满足开发的需求,故重写了导入导出功能,下面为导出功能的代码,导出我们只导出了表体的字段,有需求可以自行更改。仅供参考。

/*** @author conn* @date 2019-9-9*/
package nc.ui.tzsc.bs.action;import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;import javax.swing.JFileChooser;import nc.pub.templet.converter.util.helper.ExceptionUtils;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.bill.BillCardPanel;
import nc.ui.pub.bill.BillItem;
import nc.ui.pub.report.ReportBaseClass;
import nc.ui.pubapp.uif2app.view.BillForm;
import nc.ui.uif2.NCAction;
import nc.ui.uif2.editor.IEditor;
import nc.ui.uif2.model.AbstractAppModel;import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;/*** @author conn* @date 2019-9-9*/
public class ExportBth extends NCAction {private AbstractAppModel model;private IEditor editor;protected static JFileChooser m_chooser = null;protected static ReportBaseClass tp;public IEditor getEditor() {return editor;}public void setEditor(IEditor editor) {this.editor = editor;}public AbstractAppModel getModel() {return model;}public void setModel(AbstractAppModel model) {this.model = model;}public ExportBth() {super();this.setBtnName("导出模板");this.setCode("BtnExport");}@Overridepublic void doAction(ActionEvent event) {ExportTmpl();}/*** 获得文件选择器* * @author conn* @return* @return JFileChooser* @date 2019-9-10*/public JFileChooser getChooser() {if (m_chooser == null) {m_chooser = new JFileChooser();m_chooser.setDialogType(JFileChooser.SAVE_DIALOG);}return m_chooser;}/*** 导出Excel表格的方法* * @author conn* @param tp* @return void* @date 2019-9-10*/public void ExportTmpl() {String filePath = null;// 创建Excel文件对应的对象HSSFWorkbook hw = new HSSFWorkbook();BillCardPanel cp = ((BillForm) this.editor).getBillCardPanel();BillItem[] bodyItems = cp.getBodyShowItems();List<String> bodyList = new ArrayList<String>();// 过滤表体不需要的字段for (BillItem bodyItem : bodyItems) {String bodyColumName = bodyItem.getName();String bodyColumFiledName = bodyItem.getKey();if (bodyColumName.equals("集团") || bodyColumName.equals("组织") || bodyColumName.equals("组织版本")|| bodyColumName.equals("销售公司") || bodyColumName.equals("行号") || bodyColumName.equals("关闭人")|| bodyColumName.equals("关闭日期") || bodyColumName.equals("是否生效")) {continue;} else {bodyList.add(bodyColumName + "," + bodyColumFiledName);}}// 创建一个sheet表名 表明默认为功能名称+导入模板HSSFSheet hssfSheet = hw.createSheet(cp.getTitle() + "导入模板");// 通过sheet创建一盒row(行) 范围0-65535HSSFRow row1 = hssfSheet.createRow(0);// HSSFRow row2 = hssfSheet.createRow(1);// 通过row创建一个cell 一个cell就是一个单元格 范围0-255for (int i = 0; i < bodyList.size(); i++) {// 创建列HSSFCell col = row1.createCell(i);// 获得当前列应该填充的数据String cellvalue = bodyList.get(i);// 填充数据col.setCellValue(cellvalue);// 自适应列宽hssfSheet.setColumnWidth(i, hssfSheet.getColumnWidth(i) * 23 / 10);// 创建列样式HSSFCellStyle style = hw.createCellStyle();// 数据格式转换HSSFDataFormat format = hw.createDataFormat();// 如果字段中包含日期 则当前列单元格类型为日期类型if (cellvalue.contains("日期")) {style.setDataFormat(format.getFormat("yyyy-MM-dd"));} else {// 其余单元格为文本格式类型 方便导入操作style.setDataFormat(format.getFormat("@"));}// 该列单元格样式填充hssfSheet.setDefaultColumnStyle(i, style);}// 默认保存时文件名String title = ((BillForm) this.editor).getBillCardPanel().getTitle();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");String date = simpleDateFormat.format(new Date());getChooser().setSelectedFile(new File(date + title + "导入模板"));// 打开保存模态框if (getChooser().showSaveDialog(tp) == JFileChooser.CANCEL_OPTION) {return;}// 获的输入框内的文件名及路径filePath = getChooser().getSelectedFile().toString();if (filePath == null) {MessageDialog.showHintDlg(tp, "警告", "请输入文件名保存!");return;}// 保存为xls格式if (filePath.indexOf(".xls") < 0) {filePath = filePath + ".xls";}FileOutputStream fos = null;try {fos = new FileOutputStream(filePath);hw.write(fos);} catch (FileNotFoundException e) {e.printStackTrace();ExceptionUtils.wrapException(new Exception(e.getMessage()));} catch (IOException e) {e.printStackTrace();ExceptionUtils.wrapException(new Exception(e.getMessage()));} finally {try {fos.close();} catch (IOException e) {e.printStackTrace();ExceptionUtils.wrapException(new Exception(e.getMessage()));}}}
}

XML中需要配置导出按钮

 <!-- 导出按钮 --><bean id="btnExport" class="nc.ui.tzsc.bs.action.ExportBth"><property name="model" ref="manageAppModel" /><property name="editor" ref="billFormEditor" /></bean>

姓 名:Conn
邮 箱:tzconn@163.com
如果我有帮助到你 帮忙点个赞 谢谢
如果有问题 请联系我 我会尽力帮助你


NC63重写导出功能相关推荐

  1. SpringBoot中使用Easyexcel实现Excel导入导出功能(三)

    导出的数据包含有图片 导出excel表格的数据包含有图片,这种场景比较少.通Easyexcel实现这样的需求,我认为最简便的方法就是使用前面提到的自定义转换器(com.alibaba.excel.co ...

  2. SpringBoot中使用Easyexcel实现Excel导入导出功能(一)

    目录 前言 1.常规导入 2.读取到指定的列 3.读取全部的sheet页 4.日期.数字及其他自定义格式的转换 5.表头有多行的表格读取 6.表头数据的读取 7.单元格内的备注内容读取 前言 exce ...

  3. 如何优雅地实现 Excel 文件导出功能?(阿里出品的 EasyExcel,安利一波)

    EasyExcel 前言 导出是后台管理系统的常用功能,当数据量特别大的时候会内存溢出和卡顿页面,曾经自己封装过一个导出,POI百万级大数据量EXCEL导出 采用了分批查询数据来避免内存溢出和使用SX ...

  4. 高质量实现单文件导入、导出功能(使用EasyExcel )

    前言 咋说呢,最近交接了一个XXX统计分析系统到我手上,显示页面平平无其,一看导入.导出功能的实现代码,每个小菜单目录里面都对应一个导入导出接口,看起来十分难受!(此处省略1w字内心os)正所谓前人栽 ...

  5. 基于easyexcel的MySQL百万级别数据的excel导出功能

    前言 最近我做过一个MySQL百万级别数据的excel导出功能,已经正常上线使用了. 这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助. 原始需求:用户在U ...

  6. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增模块管理界面导出功能(可按条件导出)...

    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增模块管理界面导出功能(可按条件导出) 导出功能在很多应用场景中都需要,RDIFramework.NET V3 ...

  7. Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)

    Excel的导入V2优化版 有些时候文件上传这一步骤由前端来处理,只将上传后的 URL 传输给后端(可以参考上一文中的图片上传功能),也就是导入请求中并不会直接处理 MultipartFile 对象, ...

  8. 关于Sqlserver中 BCP命令,实现数据导出功能。

    关于Sqlserver中 BCP命令,实现数据导出功能. exec master..xp_cmdshell 'bcp "select 账号 ,姓名, 账号 from datat.dbo.个人 ...

  9. 十分钟看会laravel导入导出功能,就这么简单

    laravel5扩展包excel导入导出功能 一, 简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的.富有表现力的 ...

  10. 假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...

    我们辛苦录入的数据都希望能有重复利用的价值,一方面这些基础数据需要有数据库级的重复利用,程序级别的重复利用,另一方面还需要直接可以方便的导出倒入的功能比较好,虽然我们自己制作的统计分析功能很强大,但是 ...

最新文章

  1. pymysq向mysql写数据 为什么本地无法查看_从运维角度浅谈MySQL数据库优化,中小企业DBA必会...
  2. aws python sdk send sns_AWS:boto3订阅SNS时的空SQS队列
  3. java返回有什么用,java中的return this什么时候用,返回的是类里面的方法类型,还是实例类?上面的代码什么意思...
  4. Web应用程序运行平台的数据安全传输
  5. 软件设计师笔记---流水线
  6. PowerShell实战1:Ping_Test
  7. 剑指Offer - 面试题33. 二叉搜索树的后序遍历序列(递归)
  8. 常用的Linux操作系统
  9. 使用缓冲流有什么好处_使用档案密集柜有什么好处?不看一看会后悔
  10. 转帖:XHTML原型开发-用代码说话
  11. 深度学习 --- 优化入门一(梯度下降所面临的问题)
  12. composer 完整路径才能访问_Docker 漏洞:允许攻击者获得主机 root 访问权限
  13. LT8619B 产品功能概述 HDMI1080P转BT1120
  14. android 音量流类型,android 音量控制setVolumeControlStream
  15. Qt学习——聊天的QQ列表QToolBox类
  16. linux shell写cgi,shell写cgi脚本
  17. 日语N2听力常用词汇
  18. elasticsearch彻底删除文件命令行操作
  19. 单片机程序跑飞死机的几种原因
  20. 计算机大作业说明文档,计算机大作业.doc

热门文章

  1. 北京服务器机房位置,北京服务器机房
  2. ffmpeg 用 -ss指定起始时间
  3. Sqli-Lab实验环境搭建(phpstudy环境安装、火狐浏览器插件安装、sqlmap安装、Sqli-Lab安装)
  4. idea 搭建flutter 安卓开发环境(因为有idea就不需安装Android Studio)
  5. 硅谷系创业公司,这家深耕物联网22年的Fabless终于走到上市关口
  6. 史上最全软件测试Web测试要点,吐血整理。
  7. 服务器物理硬盘序列号,查看硬盘物理序列号的程序源代码
  8. 深度学习在视频动作识别中的应用
  9. python读取rtf文件_richtextbox怎样读取txt文件或rtf文件
  10. 古体字与简体字对照表_简体字与繁体字对照表大全.pdf