windows编程入门之窗口的显示窗口
2009-04-10 10:37
309 查看
/* * 注明出处!! *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; } }
相关文章推荐
- Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
- Windows编程入门——从一个简单的窗口说起
- Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
- Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
- Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
- Windows编程之在窗口中显示文字
- 关于Windows编程(MFC、API等 自己明白就可)向窗口写内容不能立即显示的问题
- Windows编程入门-创建第一个Window窗口
- 运行没有错,但是窗口没有显示出来——Windows编程中的CreateWindow返回值为空?
- windows编程入门之窗口的创建
- windows编程显示客户区窗口分辨率
- Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
- 创建windows窗口后没有显示(DefWindowProc)
- windows 程序设计自学:窗口正中显示Hello,World
- Windows编程笔记_图像显示的方法汇总
- Windows 下 C/C++ 多线程编程入门参考范例
- 隐藏windows任务栏中的窗口显示
- C/C++ 通过管道的方式调用Windows ping命令 且 不显示黑窗口(cmd 窗口)
- Windows编程入门-设备环境的信息
- Windows核心编程学习一:使用DialogBoxParam显示模式对话框