1. Excel导出功能
  2.  
  3. NC中功能事件代码:
  4. @Override
  5. protected void onBoRefresh() throws Exception {
  6. UIFileChooser fc = new UIFileChooser();//文件选择器
  7. fc.setDialogType(UIFileChooser.SAVE_DIALOG);// 指示 UIFileChooser 支持 "Save" 文件操作的类型值。
  8. // fc.setFileSelectionMode(UIFileChooser.FILES_AND_DIRECTORIES);//指示显示文件和目录。
  9. fc.setFileSelectionMode(UIFileChooser.FILES_ONLY);//指示仅显示文件。
  10. fc.setFileFilter(new ExcelFileFilter());// 设置当前文件过滤器。
  11. fc.setMultiSelectionEnabled(false);//设置文件选择器,以允许选择多个文件。
  12. int i = fc.showSaveDialog(this.getBillUI()); //弹出一个 "Save File" 文件选择器对话框。
  13. // fc.showOpenDialog(this.getBillUI()); //弹出一个 "Open File" 文件选择器对话框。
  14. if(i == UIFileChooser.APPROVE_OPTION){
  15. String filePatch = fc.getSelectedFile().getPath();
  16. BillCardPanel cardPanel = this.getBillCardPanelWrapper().getBillCardPanel();
  17. Boolean bool = ExportExcel.writeJxlByTableModel(filePatch, cardPanel);
  18. if(bool){
  19. MessageDialog.showHintDlg(this.getBillUI(), "提示", "导出信息成功!");
  20. return;
  21. }
  22. }else{
  23. System.out.println("撤销成功");
  24. }
  25. }
  26. 文件过滤类:
  27. package nc.ui.ldzl.order;
  28.  
  29. import java.io.File;
  30.  
  31. import javax.swing.filechooser.FileFilter;
  32.  
  33. /**
  34. * @author sj
  35. *
  36. * TODO 要更改此生成的类型注释的模板,请转至
  37. * 窗口 - 首选项 - Java - 代码样式 - 代码模板
  38. */
  39. public class ExcelFileFilter extends FileFilter {
  40. private String filters = "xls";
  41. // private String filters2 = "xlsx";
  42. private String description = "Microsoft Excel (*.xls)";
  43. /**
  44. * MyFileFilter 构造子注解。
  45. */
  46. public ExcelFileFilter() {
  47. super();
  48. }
  49. /**
  50. * Whether the given file is accepted by this filter.
  51. */
  52. public boolean accept(java.io.File f)//此过滤器是否接受给定的文件。
  53. {
  54. if (f != null)
  55. {
  56. if (f.isDirectory())//测试此抽象路径名表示的文件是否是一个目录。
  57. {
  58. return true;
  59. }
  60. String extension = getExtension(f);
  61. if(extension != null && extension.trim().equals(this.filters))
  62. {
  63. return true;
  64. }
  65. }
  66. return false;
  67. }
  68. /**
  69. * The description of this filter. For example: "JPG and GIF Images"
  70. * @see FileView#getName
  71. */
  72. public String getDescription()//此过滤器的描述。
  73. {
  74. return description;
  75. }
  76.  
  77. public static String getExtension(File f) {
  78. if(f != null) {
  79. String filename = f.getName();
  80. int i = filename.lastIndexOf('.');
  81. if(i>0 && i<filename.length()-1) {
  82. return filename.substring(i+1).toLowerCase();
  83. };
  84. }
  85. return null;
  86. }
  87. }
  88. 导出Excel代码类:
  89. package nc.ui.pub.util;
  90.  
  91. import java.io.*;
  92. import nc.ui.pub.bill.BillCardPanel;
  93. import nc.ui.pub.bill.BillScrollPane.BillTable;
  94. import jxl.*;
  95. import jxl.write.*;
  96. import jxl.write.biff.RowsExceededException;
  97. /**
  98. * 用来导出Excel的工具
  99. */
  100. public class ExportExcel {
  101.  
  102. public static boolean writeJxlByTableModel(String filePatch,BillCardPanel cardPanel) {
  103. BillTable table = (BillTable) cardPanel.getBillTable();
  104. WritableWorkbook writableWorkbook = null;
  105. OutputStream os = null;
  106. if (table == null || table.getRowCount() <= 0) {
  107. return false;
  108. }
  109. if (!filePatch.endsWith(".xls")) {
  110. System.out.println("=======不是正确的xls格式,请核查==========");
  111. return false;
  112. }
  113. try {
  114. os = new FileOutputStream(filePatch);
  115. // 创建可写簿
  116. writableWorkbook = Workbook.createWorkbook(os);
  117. // 创建工作表
  118. WritableSheet ws = writableWorkbook.createSheet("楼号档案页签", 0);
  119. // 创建一个内容 第一个整数为 列,第二个整数为 行
  120. Label label = null;
  121. int rows = table.getRowCount();
  122. int cols = table.getColumnCount() - 1;
  123. String[] headitem = new String[] { "vbillno", "pactname","reserve4" };//表头字段
  124. for (int row = 0; row < rows + 1; row++) {
  125. for (int col = 0; col < headitem.length; col++) {
  126. if (row == 0) {
  127. String headerName = cardPanel.getHeadItem(headitem[col]).getName();
  128. label = new Label(col, row, headerName);
  129. ws.addCell(label);
  130. ws.setColumnView(col,headerName == null ? 10: (headerName.length() > 2 ? headerName.length() * 3 : headerName.length() * 6));
  131. } else {
  132. label = new Label(col, row, cardPanel.getHeadItem(headitem[col]).getValue());
  133. ws.addCell(label);
  134. }
  135. }
  136. for (int col = headitem.length; col < cols + headitem.length; col++) {
  137. if (row == 0) {
  138. String headerName = table.getTableHeader().getColumnModel().getColumn(col - headitem.length).getHeaderValue() == null ? "":
  139. table.getTableHeader().getColumnModel().getColumn(col - headitem.length).getHeaderValue().toString();
  140. label = new Label(col, row, headerName);
  141. ws.addCell(label);
  142. ws.setColumnView(col,headerName == null ? 10: (headerName.length() > 2 ? headerName.length() * 3 : headerName.length() * 6));
  143. } else {
  144. label = new Label(col, row, table.getValueAt(row - 1,col - headitem.length) == null ? "" : table.getValueAt(row - 1, col - headitem.length).toString());
  145. ws.addCell(label);
  146. }
  147. }
  148. }
  149. writableWorkbook.write();
  150. } catch (IOException e) {
  151. e.printStackTrace();
  152. } catch (RowsExceededException e) {
  153. e.printStackTrace();
  154. } catch (WriteException e) {
  155. e.printStackTrace();
  156. } finally {
  157. try {
  158. if(os != null){
  159. os.close();
  160. }
  161. if(writableWorkbook != null){
  162. writableWorkbook.close();
  163. }
  164. } catch (IOException e) {
  165. // TODO Auto-generated catch block
  166. e.printStackTrace();
  167. } catch (WriteException e) {
  168. // TODO Auto-generated catch block
  169. e.printStackTrace();
  170. }
  171. }
  172. return true;
  173. }
  174. }

  

NC 5导出Excel的更多相关文章

  1. 导出excel时,以form方式提交json数据

    今天在写项目时写到一个excel的导出,开始想用ajax请求后台后导出,但发现ajax会有返回值,而且ajax无法直接输出文件,而后台的excel导出方法已经封装好,不方便修改. 就改用了提交的方式f ...

  2. JQGrid 导出Excel 获取筛选条件

    需求描述:页面加载后,进行相关数据搜索,要求点击导出按钮后  下载Excel文件. 思路:希望在点击[导出Excel]按钮时,获取到表格搜索时的filters内容. 在百度.api.jqgrid.js ...

  3. 杂项收集,包括-发邮件、二维码生成、文件下载、压缩、导出excel

    本篇就最近工作解决的问题做个代码收集.包括以下几个方面:发邮件.二维码生成.文件下载.压缩.导出excel.有一种可用的解决方法就好,不求全面,不求原理. 1.发邮件: 命名空间:System.Net ...

  4. C#使用Aspose.Cells导出Excel简单实现

    首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...

  5. 利用poi导出Excel

    import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...

  6. [django]数据导出excel升级强化版(很强大!)

    不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...

  7. NPOI导出Excel

    using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...

  8. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  9. asp.net DataTable导出Excel 自定义列名

    1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...

随机推荐

  1. CenterOS7.5中搭建wordpress

    centeros7.5中搭建wordpress 1.环境 云平台:华为云 服务器操作系统:CentOS7.: 博客部署的服务器:Apache HTTP: 数据库:mysql: 框架:wordpress ...

  2. [综] meanshift算法

    Meanshift,聚类算法 http://www.cnblogs.com/liqizhou/archive/2012/05/12/2497220.html 记得刚读研究生的时候,学习的第一个算法就是 ...

  3. Linux下usb设备驱动详解

    USB驱动分为两块,一块是USB的bus驱动,这个东西,Linux内核已经做好了,我们可以不管,我们只需要了解它的功能.形象的说,USB的bus驱动相当于铺出一条路来,让所有的信息都可以通过这条USB ...

  4. SqlServer查询某个表的列名称、说明、备注、类型等

    SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull ...

  5. Spring复习

    第一天 IOC:控制反转,对象的创建权交给Spring DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的依赖的属性注入(设置)进来. 包括集合的注入 ClassPathXml ...

  6. Error when loading the SDK 发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素

    Error when loading the SDK: Error: Error parsing D:\DIRS\Java\android-sdk-windows\system-images\andr ...

  7. (整理)在REHL6.5上部署ASP.NET MVC

    最近项目要使用Linux服务器(REHL6.5)+MySQL,因此特尝试操作. 1 Linux 安装Jexus 1.1 下载Jexus 因为服务器没有安装Xwindows,Jexus的下载又出现问题, ...

  8. 常见的php模式

    php中6种常见的设计模式 单例模式 观察者模式 策略模式 工厂模式 注册模式 适配器模式 单例模式 Db.php<?php /** * 单例模式 */ class Db { private s ...

  9. linux文件属性的10个字符各代表什么意思

    10个字符表示文件类别和权限,具体如下: 例: 第一个字符表示文件类别,代表的含义如下:-:普通文件d:目录文件b:块设备文件c:字符设备文件l:符号链接文件 后面9个字符代表3组访问权限:第1组的3 ...

  10. GIL计算python 2 和 python 3 计算密集型

    首先我画了一张图来表示GIL运行的方式: Python 3执行如下计算代码:#-*-conding:utf-8-*-import threading import timedef add(): n = ...