`
mj-beijing
  • 浏览: 38875 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

导出Excel的工具类,对BillListPanel进行导出

阅读更多

package nc.ui.fh.des.excel;

import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import java.util.Map.Entry;

import javax.swing.JFileChooser;
import javax.swing.JTable;

import nc.ui.pub.ToftPanel;
import nc.ui.pub.beans.UITable;
import nc.ui.pub.bill.BillItem;
import nc.ui.pub.bill.BillListPanel;
import jxl.*;
import jxl.write.*;
import jxl.write.biff.RowsExceededException;

/**
 * 导出Excel的工具类
 * @author 麻杰<br>
 * @创建时间:2011-11-16 下午06:08:23
 */
public class BillListExportExcel {
 
    protected static javax.swing.JFileChooser m_chooser = null;
    protected static BillListPanel billListPanel = null;
   
    /**
     * @author 麻杰<br>
     * 日期:2011-11-17
     * @param tp        父组件
     * @param sheetName  Excel页签名称
     * @param BillListPanel bill
     * @param istotal 是否合计
     */
    public static void  exportExcel(ToftPanel tp ,String sheetName,BillListPanel bill,boolean istotal){
     billListPanel = bill;
     String filePath = null;

   if (getChooser().showSaveDialog(tp) == javax.swing.JFileChooser.CANCEL_OPTION) {
    return;
   }
   filePath = getChooser().getSelectedFile().toString();
   if (filePath == null) {
    tp.showHintMessage("请输入文件名保存!");
    return;
   }

   if (filePath.indexOf(".xls") < 0) {
    filePath = filePath + ".xls";
   }
   boolean isSucceed = writeJxlByTableModel(filePath,sheetName,istotal);
   if(isSucceed){
    tp.showWarningMessage("导出完成");
   }else{
    tp.showWarningMessage("导出失败");
   }
    }

    /**
     * 生成Excel文件
     * @author 麻杰<br>
     * 日期:2011-11-17
     * @param filePatch
     * @param sheetName
     * @param istotal  是否合计
     * @return
     */
        public static boolean writeJxlByTableModel(String filePath,String sheetName,boolean istotal) {
         UITable table = billListPanel.getHeadTable();
             if (table == null || table.getRowCount() <= 0)
                  return false;
             WritableWorkbook writableWorkbook = null;
             OutputStream os = null;
          try {
                  os = new FileOutputStream(filePath);
                  // 创建可写簿
                  writableWorkbook = Workbook.createWorkbook(os);
                  // 创建工作表
                  WritableSheet ws = writableWorkbook.createSheet(sheetName, 0);
                  // 创建一个内容 第一个整数为 列,第二个整数位 行
                  Label label = null;
                  int rows = table.getRowCount();
                  int cols = table.getColumnCount();
                  for (int row = 0; row < rows + 1; row++) {
       for (int col = 0; col < cols ; col++) {
        if(row == 0){
         String headerName = table.getTableHeader().getColumnModel().getColumn(col).getHeaderValue() == null ? "" :
             table.getTableHeader().getColumnModel().getColumn(col).getHeaderValue().toString();
         label = new Label(col,row,headerName,getHeaderFormat());
         ws.addCell(label);
         ws.setColumnView(col, headerName == null ? 10 : (headerName.length() > 2 ? headerName.length()*3 : headerName.length()*6));
        }
       
        label = new Label(col,row+1,table.getValueAt(row, col) == null ? "" : table.getValueAt(row, col).toString());
        if(label.getContents() != null){
         if(label.getContents().equals("false")){
          label.setString("N");
         }else if(label.getContents().equals("true")){
          label.setString("Y");
         }
        }
        ws.addCell(label);
       }
                  }
                  if(istotal){
                   //添加合计行
                   Map<Integer,String> map = getTotalMap();
                   if(map != null && map.size()>0){
                    Set<Entry<Integer,String>> set =  map.entrySet();
                    Iterator it = set.iterator();
                    while(it.hasNext()){
                     Entry<Integer,String> entry = (Entry<Integer, String>) it.next();
                     label = new Label(entry.getKey(),rows+1,entry.getValue());
                     ws.addCell(label);
                    }
                   }
                  }
                  writableWorkbook.write();
                 
          } catch (IOException e) {
                  e.printStackTrace();
          } catch (RowsExceededException e) {
                  e.printStackTrace();
          } catch (WriteException e) {
                  e.printStackTrace();
          } finally {
                  if(writableWorkbook != null){
                   try {
      writableWorkbook.close();
     } catch (WriteException e) {
      e.printStackTrace();
     } catch (IOException e) {
      e.printStackTrace();
     }
                  }
                  if(os != null){
                   try {
      os.close();
     } catch (IOException e) {
      e.printStackTrace();
     }
                  }
          }
          return true;
        }
       
        /**
         * 获得文件选择器
         * @author 麻杰<br>
         * 日期:2011-11-17
         * @return
         */
     private static javax.swing.JFileChooser getChooser() {

      if (m_chooser == null) {
       m_chooser = new JFileChooser();
       m_chooser.setDialogType(JFileChooser.SAVE_DIALOG);
      }
      return m_chooser;

     }
     
     /**
      * 获得表头行样式
      * @author 麻杰<br>
      * 日期:2011-11-16
      * @throws WriteException
      */
     private static WritableCellFormat getHeaderFormat() throws WriteException{
      WritableFont font = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD, false);
      WritableCellFormat format = new WritableCellFormat(font);
      format.setWrap(false);
      format.setAlignment(Alignment.CENTRE);//水平方向剧中
      format.setVerticalAlignment(VerticalAlignment.CENTRE);
      return format;
     }
     
     /**
      * 获得合计封装Map
      * @author 麻杰<br>
      * 日期:2011-11-18
      * @return
      */
     private static Map<Integer,String> getTotalMap(){
      Vector vector = (Vector)billListPanel.getHeadBillModel().getTotalTableModel().getDataVector().get(0);
      Object total = null;
      Map<Integer,String> map = new HashMap<Integer,String>();
      for(int i=0;i<vector.size();i++){
       total = vector.get(i);
       if(total != null){
        int result = getOrder(i);
        if(result != -1){
         map.put(result, total.toString());
        }
       }
      }
      return map;
     }
     
     /**
      * 根据合计值的位置获得其在UITable中的位置
      * @author 麻杰<br>
      * 日期:2011-11-18
      * @param num
      * @return
      */
     private static Integer getOrder(int num){
   int result = 0;
   BillItem[] billItem = billListPanel.getHeadBillModel().getBodyItems();
   
   if(!billItem[num].isShow()){
    return -1;
   }
   
   for(int i=0;i<num;i++){
    if(billItem[i].isShow()){
     result++;
    }
   }
   return result;
     }
}

分享到:
评论

相关推荐

    java使用POI导出 Excel工具类

    java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。

    Java poi导入导出EXCEL工具类(兼容各版本)

    概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...

    导出excel工具类

    导出excel工具类

    导出Excel工具类

    在IT行业中,导出Excel工具类是经常被用于数据处理和报告生成的场景。这个工具类通常包含了多种方法,能够方便地将程序中的数据结构转换为Excel格式的文件,便于用户下载、查看或进一步分析。这里我们将深入探讨导出...

    java导入导出Excel工具类

    一个实用的java导入导出Excel工具类,基于开源的Java Excel API(JXL)纯java类库实现,Windows和Linux系统下均可使用。 主要实现功能如下: 导出:将List转化为Excel(listToExcel)。 导入:将Excel转化为List...

    easyuiPoi导出Excel工具类封装(支持合并单元格)

    EasyUIPoI是一款基于Apache POI的Java工具库,专门用于简化Excel的导出操作,尤其在处理模板和合并单元格方面提供了便利。这个库主要适用于那些需要在Web应用中生成Excel报告或导出数据的场景,比如数据分析、报表...

    Excel导出工具类

    为了方便开发者将程序中的数据快速导出到Excel文件,自定义Excel导出工具类是常见的做法。本篇文章将深入探讨如何利用Java的Apache POI库创建一个能够处理`List&lt;Object&gt;`数据的Excel工具类。 Apache POI是一个流行...

    java 使用poi导出excel工具类

    java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!

    jxl导出excel工具类

    本文将详细介绍如何使用`jxl`库创建一个导出Excel的工具类,以及这个工具类如何帮助我们简化代码,提高效率。 首先,`jxl`库提供了对Excel文件的读写支持,包括工作簿(Workbook)、工作表(Worksheet)、行(Row)...

    Java 导出excel工具类(封装,带导出格式和类型转换)

    * 导出excel(利用反射机制) * String[] title = {"订单号","商品名称","商品价格","创建时间"}; * String[] field = {"orderNum","productName","productPrice","createTime"}; * ExportTools.export("sellJoin...

    导出EXCEL工具类

    这个"导出EXCEL工具类"显然提供了一个功能,允许开发者从数据库中获取数据并将其格式化为Excel文件。下面我们将深入探讨如何在Java中实现这样的功能,以及涉及到的关键知识点。 首先,我们需要了解Java中处理Excel...

    使用ITEXT导出EXCEL工具类

    在本篇文章中,我们将深入探讨如何使用ITEXT来创建Excel工具类,以便在Java应用程序中方便地导出数据到Excel格式。 首先,我们需要理解ITEXT并不直接支持Excel格式。但我们可以利用ITEXT的`PdfWriter`和`Document`...

    java Excel工具类,导入导出Excel数据

    java Excel工具类,导入导出Excel数据,导入数据对合并表格有判断获取数据,导出数据到Excel,Excel文件不存在会创建。 博客:https://blog.csdn.net/qq_37902949/article/details/81230640

    POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格

    在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...

    easyui导出excel工具

    总结,EasyUI的datagrid导出Excel工具类为开发者提供了一种便捷的方式,通过前后端配合,将网页中的数据快速转换成Excel文件,满足了用户对数据管理的需求。在实际应用中,需要注意数据安全和性能优化,确保功能的...

    导入导出excel工具类

    这里我们讨论的“导入导出excel工具类”是一个专门处理这些任务的Java代码库,它可能包含一系列预定义的方法和逻辑,帮助开发者高效地与Excel文件进行交互。下面将详细阐述相关的知识点: 1. **Java API for Excel...

    利用poi实现导入导出Excel工具类

    至于压缩包文件中的"newExcel",可能是包含了一个示例Excel文件,供用户测试工具类的功能,或者是一个例子,展示了如何使用该工具类进行实际操作。在测试或学习时,可以使用这个文件进行导入和导出的实践操作。

    C#通用Excel导入导出工具类

    本篇文章将深入探讨“C#通用Excel导入导出工具类”的实现原理及应用,主要涉及的技术点包括反射、特性以及如何创建一个高效的Excel导入导出解决方案。 首先,我们要理解反射在C#中的作用。反射是一种强大的机制,它...

Global site tag (gtag.js) - Google Analytics