`

JTable 导出 Excel 利用 jxl.jar

阅读更多
/*
 * 注明出处!! 
 *QQ: 409323911   
*/
package com.db.report;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.JOptionPane;
import javax.swing.JTable;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

/**
 *
 * @author Administrator
 */
public class ExportTableToExcel  {

    public ExportTableToExcel(File file, String heading,String inscribe,JTable table,String[] columnName) {
        try {
            WritableWorkbook workbook = null;// 创建工作薄

            if (file.exists()) {// 文件已经存在
                workbook = Workbook.createWorkbook(file, Workbook.getWorkbook(file));
            } else {// 文件还不存在
                workbook = Workbook.createWorkbook(file);
            }

            WritableSheet sheet = workbook.createSheet(
                    heading, workbook.getNumberOfSheets());// 创建工作表
            
            //取得TABLE的行数
             int rowNum = table.getRowCount();
             //取得TABLE的列数
             int columnNum = table.getColumnCount();
            
            int mergeNumberOfColumns =columnNum;// 获取表格列数

            fillHeading(sheet, heading, mergeNumberOfColumns);// 填写主标题
            fillInscribe(sheet, inscribe, mergeNumberOfColumns,rowNum);// 填写落款

//             fillSubheading(sheet, subheading, mergeNumberOfColumns);// 填写副标题           
//             fillColumnName(sheet);// 填写列名
//             fillCell(sheet);// 填写数据
            
            for (int k = 0; k < columnNum; k++) {
              jxl.write.Label labelN = new jxl.write.Label(k, 2,columnName[k]);
              try {
                sheet.addCell(labelN);
              }
              catch (RowsExceededException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
              }
              catch (WriteException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
              }
            }
            for (int i = 0; i < columnNum; i++) {//列
              for (int j = 1; j <= rowNum; j++) {//
                String str = null;
                str =table.getValueAt(j-1, i).toString();

                jxl.write.Label labelN = new jxl.write.Label(i, j, str);

                try {
                  sheet.addCell(labelN);
                }
                catch (RowsExceededException e) {
                  e.printStackTrace();
                }
                catch (WriteException e) {
                  e.printStackTrace();
                }
              }
            }
            //写入工作表
            workbook.write();
            try {
            	workbook.close();
            	int dialog = JOptionPane.showConfirmDialog(null,
            			"飞行小时统计表导出成功!是否打开?",
						"温馨提示", JOptionPane.YES_NO_OPTION);
				if (dialog == JOptionPane.YES_OPTION) {
					
//					Runtime run = Runtime.getRuntime();
//					// I make the assumption that the client has Excel and
//					// the file type .XLS is associated with Excel
//					// This is a simple check to find out the 操作系统!
//					String lcOSName = System.getProperty("os.name").toLowerCase();
//					boolean MAC_OS_X = lcOSName.startsWith("mac os x");
//					if (MAC_OS_X) {
//						run.exec("open " + file);
//					} else {
//						run.exec("cmd /c start \"\" \"" + file + "\"");
//					}
					
					Runtime.getRuntime().exec("cmd /c start \"\" \"" + file + "\"");
				}	
            }
            catch (WriteException e) {
              e.printStackTrace();
            }
          }
          catch (FileNotFoundException e) {
            JOptionPane.showMessageDialog(null, "导入数据前请关闭工作表");
          }
          catch (Exception e) {
        	 Logger.getLogger(ExportTableToExcel.class.getName()).log(Level.SEVERE, null, e);
            JOptionPane.showMessageDialog(null, "没有进行筛选");

          }
            
     
    }

    // 填写主标题
    private void fillHeading(WritableSheet sheet, String heading, int mergeNumberOfColumns)
            throws WriteException {
        WritableFont font = new WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD,
                false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);// 定义字体

        WritableCellFormat format = new WritableCellFormat(font);// 创建格式化对象

        format.setAlignment(Alignment.CENTRE);// 水平居中显示

        format.setVerticalAlignment(VerticalAlignment.CENTRE);// 垂直居中显示

        sheet.mergeCells(0, 0, mergeNumberOfColumns - 1, 0);// 合并单元格

        sheet.setRowView(0, 600);// 设置行高

        sheet.addCell(new Label(0, 0, heading, format));// 填写工作表

    }

    //填写落款
    private void fillInscribe(WritableSheet sheet, String inscribe, int mergeNumberOfColumns, int rowNum)
            throws WriteException {
        WritableFont font = new WritableFont(WritableFont.ARIAL, 11, WritableFont.NO_BOLD,
                false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);// 定义字体

        WritableCellFormat format = new WritableCellFormat(font);// 定义格式化对象

        format.setAlignment(Alignment.LEFT);// 水平居中显示

        sheet.mergeCells(0, rowNum+2, mergeNumberOfColumns - 1, rowNum+2);// 合并单元格

        sheet.addCell(new Label(0,rowNum+2, inscribe, format));// 填写工作表

    }
    //=====================================填写副标题=====================================
//    private void fillSubheading(WritableSheet sheet, String subheading, int mergeNumberOfColumns)
//            throws WriteException {
//        WritableFont font = new WritableFont(WritableFont.ARIAL, 14, WritableFont.NO_BOLD,
//                false, UnderlineStyle.NO_UNDERLINE, Colour.RED);// 定义字体
//
//        WritableCellFormat format = new WritableCellFormat(font);// 定义格式化对象
//
//        format.setAlignment(Alignment.CENTRE);// 水平居中显示
//
//        format.setVerticalAlignment(VerticalAlignment.CENTRE);// 垂直居中显示
//
//      //  sheet.mergeCells(0, 1, mergeNumberOfColumns - 1, 1);// 合并单元格
//
//        sheet.setRowView(1, 400);// 设置行高
//
//        sheet.addCell(new Label(0, 1, subheading, format));// 填写工作表
//
//    }

    //=====================================填写列名=====================================
//    private void fillColumnName(WritableSheet sheet) throws WriteException {
//        WritableFont font = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD,
//                false, UnderlineStyle.NO_UNDERLINE, Colour.RED);// 定义字体
//
//        WritableCellFormat format = new WritableCellFormat(font);// 定义格式化对象
//
//        format.setAlignment(Alignment.CENTRE);// 水平居中显示
//
//        sheet.setColumnView(0, 15);// 设置列宽
//
//        //填写工作表
//        for (int column = 0; column < columnName.size(); column++) {
//            sheet.addCell(new Label(column, 3, columnName.get(column), format));
//        }
//    }
//
//    //填写数据
//    private void fillCell(WritableSheet sheet) throws WriteException {
//        WritableFont font = new WritableFont(WritableFont.ARIAL, 12, WritableFont.NO_BOLD,
//                false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);// 定义字体
//
//        WritableCellFormat format = new WritableCellFormat(font);// 定义格式化对象
//
//        format.setAlignment(Alignment.CENTRE);// 水平居中显示
//
//        //填写工作表
//        for (int row = 0; row < tableData.size(); row++) {
//            Vector rowData = tableData.get(row);
//            for (int column = 0; column < rowData.size(); column++) {
//                sheet.addCell(new Label(column, row + 4, rowData.get(column).toString(), format));
//            }
//        }
//    }
}

 调用上面导出excel类:

button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				File selectedFile = getSelectedFile(".xls");
				if (selectedFile != null) {
					String[] columnName = { "编号", " 学号", "姓名", "班级", "性别",
							"生日", "身份证", "年龄", "学历", "专业", "联系方式", "就业城市",
							"学生状态", "备注" };
					String today = new SimpleDateFormat("yyyy年MM月dd日")
							.format(new Date());
					String inscribe = "填表人:                                                                        填表日期:"
							+ today; // 页脚

					new ExportTableToExcel(selectedFile, fileName, inscribe,
							table, columnName);
				}

			}
		});
 
	private File getSelectedFile(final String type) {
		String name = fileName;

		JFileChooser pathChooser = new JFileChooser();
		pathChooser.setFileFilter(new FileFilter() {

			@Override
			public boolean accept(File f) {
				if (f.isDirectory()) {
					return true;
				} else {
					if (f.getName().toLowerCase().endsWith(type)) {
						return true;
					} else {
						return false;
					}
				}
			}

			@Override
			public String getDescription() {
				return "文件格式(" + type + ")";
			}
		});
		pathChooser.setSelectedFile(new File(name + type));
		int showSaveDialog = pathChooser.showSaveDialog(this);
		if (showSaveDialog == JFileChooser.APPROVE_OPTION) {
			return pathChooser.getSelectedFile();
		} else {
			return null;
		}
	}
4
0
分享到:
评论
1 楼 chen569844962 2014-11-06  
博主,你好,这个代码貌似不太完整,不知道能不能共享一下带我给我呢?

相关推荐

    JTable数据导出到Excel.rar

    本资源"JTable数据导出到Excel.rar"提供了一个实现将`JTable`中的数据导出到Microsoft Excel文件的方法。下面我们将详细探讨`JTable`与Excel数据交换的相关知识点。 1. **JTable基本概念** `JTable`是Java Swing中...

    Jtable导出到excel

    JTable 和 Excel 图表是常被用在网格或表格中显示数据。通常,用户希望输入到 JTable 的数据已经存在于 Excel 电子表格中。Excel 格式使用在非 Excel 软件中来实现导入-导出功能。因为如此,Java 软件也应该提供通用...

    jtable 导出excel 超过65535 新建一个sheet代码

    ### jtable 导出excel 超过65535 新建一个sheet代码 在进行数据处理时,经常会遇到需要将大量数据从Java应用程序中的`JTable`导出到Excel文件的需求。然而,在实际操作过程中,我们可能会遇到一个问题:当数据量...

    将JTable数据导出到Excel

    在Java编程环境中,`JTable`是Swing库中用于展示二维表格数据的组件,而将`JTable`中的数据导出到Excel是一种常见的需求,特别是在数据处理和报告生成的场景下。本教程将深入讲解如何实现这个功能,并提供一个名为`...

    【图形处理相关的jar包】jai-imageio-1.1.jar和swingx-1.6.1.jar下载

    通过使用`jai-imageio`,开发者可以轻松地在Java程序中实现对这些格式的高效读写,同时利用其强大的图像处理能力。 例如,你可以用`jai-imageio`来实现以下功能: 1. 读取和写入不同格式的图像文件。 2. 动态调整...

    java swing 导出Jtable里面的数据到excel

    java swing 导出Jtable里面的数据到excel,不用拷贝代码,直接粘贴代码

    JDK中rt.jar、tools.jar和dt.jar作用.pdf

    例如,JFrame、JButton、JTable等Swing组件的类都封装在这个jar文件中。虽然在现代的Java开发中,许多开发者更倾向于使用JavaFX替代Swing,但dt.jar对于那些仍然使用Swing的项目来说仍然是必要的。 除了以上三个jar...

    tesseract-ocr 相关jar包 jar_jai_imageio-1.1-alpha 和 swingx-1.6.1.jar

    它的组件如`JTable`和`JTree`等可以用来展示和编辑识别出的文本,提供更丰富的交互体验。 3. **集成Tesseract OCR**: 要在Java项目中使用Tesseract OCR,首先需要将其Java绑定库(如`tess4j`)引入到项目中,然后...

    将JTable表的内容输出到Excel.txt

    根据提供的文件信息,我们可以总结出以下关键知识点,主要聚焦于如何使用Java编程语言结合Apache POI库实现将JTable中的内容导出至Excel文件的功能。 ### 关键知识点 #### 1. JTable简介 - **定义**:`JTable`是...

    jxl驱动包,从JTable中到处数据到excel JAVA

    总结来说,"jxl驱动包,从JTable中到处数据到excel JAVA"是一个实用的工具,可以帮助开发者轻松地将Java应用中的数据导出为Excel格式,提高数据管理的便捷性和效率。配合提供的示例,开发者可以快速上手,实现自己的...

    javaswingJtable资源

    JTable 是java窗体应用,关于布局,JTable的方法和一些其他的运用

    jai-imageio和swingx.jar.zip

    标题中的"jai-imageio和swingx.jar.zip"是一个包含两个关键Java库的压缩文件,它们分别是jai-imageio-1.1.jar和swingx-1.6.1.jar。这两个库在Java开发中用于图形处理和用户界面设计,特别适用于需要高级图像操作和...

    jTable.jar

    是一个jTable例子的例子 可以让新手当范例使

    如何将JTable表的内容输出到Excel

    本教程详细介绍了如何使用Java和jxl库将JTable中的数据输出到Excel文件中。通过这个示例,我们可以看到创建Excel文件的基本步骤,包括创建工作簿、工作表、设置各种单元格格式等。这对于需要将Java应用程序中的数据...

    Java SE程序 把Jtable中的数据导出到Excel中

    Java SE程序 把Jtable中的数据导出到Excel中Java SE程序 把Jtable中的数据导出到Excel中Java SE程序 把Jtable中的数据导出到Excel中Java SE程序 把Jtable中的数据导出到Excel中Java SE程序 把Jtable中的数据导出到...

    Jtable与Excel间复制黏贴

    对于与Excel的交互,我们可以利用Apache POI库,这是一个强大的API,用于读取、写入和修改Microsoft Office格式的文件,包括Excel。以下是步骤: 1. 创建一个`HSSFWorkbook`对象来表示一个新的Excel工作簿。 2. ...

    swingx-core-1.6.5-1.jar.zip

    在SwingX 1.6.5-1这个版本中,主要的jar文件是"swingx-core-1.6.5-1.jar",这个文件包含了SwingX的所有核心类和方法,供开发者在项目中直接引用。通过引入这个库,开发者可以享受到以下主要功能和组件: 1. **...

    swingx-1.0.jar

    在实际应用中,开发者可以利用SwingX提供的这些组件和功能来创建更丰富、更交互的用户界面,并结合其他工具进行图像处理和文字识别。由于标签中提到了"swingx1.0",这意味着你正在使用的是SwingX的第一个稳定版本,...

    2.高级Swing组件JTable应用[归纳].pdf

    Java Swing 组件 JTable 应用详解 JTable 是 Java Swing 库中的一种高级组件,用于显示和编辑数据。它是 Java 编程中最常用的表格组件之一。下面是 JTable 应用的详细知识点: JTable 与 TableModel JTable 组件...

    java 给JTable更换表标题Demo.rar

    主要代码: DefaultTableModel model = (DefaultTableModel) table.getModel(); model.setColumnIdentifiers(new String[] {"标题一", "标题二", "标题三"});

Global site tag (gtag.js) - Google Analytics