mxdxm 发表于 2013-2-1 12:53:19

将表格保存成excel格式的文件

import org.apache.poi.hssf.usermodel.*;import org.apache.poi.hssf.util.HSSFColor;import java.awt.*;import java.io.FileOutputStream;import java.io.IOException;import javax.swing.*;import javax.swing.table.*;/** * <p>Title: com.gwtt.tools.export.ExportXlsUtil</p> * <p>Description: ��JTable��ݵ�����excel�ļ��С�</p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: GWTT</p> * @author Laura * @version 1.0 */public class ExportXlsUtil {private HSSFWorkbook workbook = null;private HSSFSheet sheet = null;public ExportXlsUtil () {    workbook = new HSSFWorkbook();    sheet = workbook.createSheet("sheet1");}/**   * ��table����ݵ�����ָ��excel�ļ�   * @param data��JTable�е����   * @param columnNames��JTable����   * @param filename��excel�ļ���ȫ·����   */public void exportTableToXls (Object [][] data,                              Object [] columnNames,                              String filename)                         throws IOException {    JTable table = new JTable(data, columnNames);    exportTableToSheet(table, sheet);    FileOutputStream fout = new FileOutputStream(filename);    workbook.write(fout);    fout.close() ;}/**   * ��JTable��ݵ�����HSSFSheet��   * @param table ��������JTable��   * @param sheet ��Ŀ��HSSFSheet   */private void exportTableToSheet (JTable table,                                 HSSFSheet sheet) {    int rowCount = table.getRowCount();    int colCount = table.getColumnCount();    //填充了表头到excel中������ͷ    createAndFormatHeader(table, sheet);    int currentSheetRow = 1;    //填充了表的内容到excel中������Ԫ��    for (int tableRowIndex = 0; tableRowIndex < rowCount; tableRowIndex++) {      for (int tableColIndex = 0; tableColIndex < colCount; tableColIndex++) {      // create and format the cell in the spreadsheet      createAndFormatCell(table, tableRowIndex, tableColIndex, sheet,                            currentSheetRow);      }      currentSheetRow++;//换行    }}/**   * ��������ʽ��Excel�ĵ�Ԫ��   */private void createAndFormatCell (JTable table,                                    int tableRowIndex,                                    int tableColIndex,                                    HSSFSheet sheet,                                    int currentSheetRow) {    // get the cell value from the table    Object cellValue = table.getValueAt(tableRowIndex, tableColIndex);    // create the cell    HSSFCell cell = createHSSFCell(sheet, cellValue, currentSheetRow,                                 tableColIndex);    // get the renderer component that renders the cell    TableCellRenderer renderer = table.getCellRenderer(tableRowIndex,                                                       tableColIndex);    Component rendererComponent = renderer.getTableCellRendererComponent(table,                                                                         cellValue,                                                                         false,                                                                         false,                                                                         tableRowIndex,                                                                         tableColIndex);    if (rendererComponent instanceof JLabel) {      // if it is a JLabel, get the label text which is the actual formatted displayed text      // and not the raw cell value      JLabel label = (JLabel)rendererComponent;      cellValue = label.getText();    }    formatCell(cell, rendererComponent);}/**   * ��������ʽ����ͷ   */private void createAndFormatHeader (JTable table,                                    HSSFSheet sheet) {    for (int colIndex = 0; colIndex < table.getColumnCount(); colIndex++) {      // get the cell value from the table      Object cellValue = table.getColumnName(colIndex); //得到表的列名      // create the cell      HSSFCell cell = createHSSFCell(sheet, cellValue, 0, colIndex);      // get the renderer component that renders the cell      TableCellRenderer renderer = table.getDefaultRenderer(table                                                            .getColumnClass(colIndex));      Component rendererComponent = renderer.getTableCellRendererComponent(table,                                                                           cellValue,                                                                           false,                                                                           false,                                                                           0,                                                                           colIndex);      if (rendererComponent instanceof JLabel) {      // if it is a JLabel, get the label text which is the actual formatted displayed text      // and not the raw cell value      JLabel label = (JLabel)rendererComponent;      cellValue = label.getText();      }      formatCell(cell, rendererComponent);    }}//设置一个单元格的值private HSSFCell createHSSFCell (HSSFSheet sheet,                                 Object value,                                 int row,                                 int col) {    // create row if not yet created    HSSFRow hssfRow = sheet.getRow(row);         //一行    hssfRow = (hssfRow == null)            ? sheet.createRow(row)            : hssfRow;    // create cell if not yet created    HSSFCell cell = hssfRow.getCell((short)col);   //一个单元格    cell = (cell == null)         ? hssfRow.createCell((short)col)         : cell;    // set the cell value    String cellValue = (value == null)                     ? ""                     : value.toString();    cell.setEncoding(HSSFCell.ENCODING_UTF_16 );    cell.setCellValue(cellValue);    return cell;}private void formatCell (HSSFCell cell,                           Component rendererComponent) {      /*      // create a style    HSSFCellStyle cellStyle = workbook.createCellStyle();    // set the cell color    cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);    Color color = rendererComponent.getBackground();    //HSSFPalette palette = workbook.getCustomPalette();    // maintain(increment after each use) unused color index as an instance variable    short someUnusedColorIndex = 10;    // palette.setColorAtIndex(someUnusedColorIndex, (byte)color.getRed(),    //                     (byte)color.getGreen(), (byte)color.getBlue());    //cellStyle.setFillForegroundColor(someUnusedColorIndex);    cellStyle.setFillForegroundColor(HSSFColor.WHITE.index);//.setFillForegroundColor(someUnusedColorIndex);    // set the font    Font font = rendererComponent.getFont();    HSSFFont hssfFont = createHSSFFont(font);    System.err.println("xxxxxxxx" + font.toString()) ;    System.err.println(hssfFont.FONT_ARIAL) ;   // cellStyle.setFont(hssfFont);    // set the border    cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);    cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);    cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);    cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);    // don't forget to set the cell style!    cell.setCellStyle(cellStyle);    */    cell.setEncoding(HSSFCell.ENCODING_UTF_16) ;}private HSSFFont createHSSFFont (Font font) {    HSSFFont hssfFont = workbook.createFont();    hssfFont.setFontName(font.getName());    hssfFont.setItalic(font.isItalic());    hssfFont.setBoldweight(font.isBold()                           ? HSSFFont.BOLDWEIGHT_BOLD                           : HSSFFont.BOLDWEIGHT_NORMAL);    hssfFont.setFontHeightInPoints((short)font.getSize());    hssfFont.setUnderline(HSSFFont.U_NONE);    return hssfFont;}public static void main (String [] args) {    Object [][] data = new Object;    data = new Object [] { "��δdz", "Red", "A", new Integer(1), new Double(1.1) };    data = new Object [] { "Two", "Red", "A", new Integer(2), new Double(2.2) };    data = new Object [] { "Three", "Red", "A", new Integer(3), new Double(3.3) };    data = new Object [] {                "Four", "Green", "A", new Integer(4), new Double(4.4)            };    data = new Object [] {                "Five", "Green", "A", new Integer(5), new Double(5.5)            };    data = new Object [] { "Six", "Green", "A", new Integer(6), new Double(6.6) };    data = new Object [] {                "Seven", "Green", "A", new Integer(7), new Double(7.7)            };    data = new Object [] {                "Eight", "Green", "A", new Integer(8), new Double(8.8)            };    data = new Object [] { "Nine", "Blue", "A", new Integer(9), new Double(9.9) };    data = new Object [] {                "Ten", "Blue", "A", new Integer(10), new Double(10.10)            };    data = new Object [] {               "Eleven", "Blue", "A", new Integer(11), new Double(11.11)               };    data = new Object [] {               "Twelve", "Blue", "A", new Integer(12), new Double(12.12)               };    data = new Object [] {               "Thirteen", "Blue", "A", new Integer(13), new Double(13.13)               };    data = new Object [] {               "Fourteen", "Blue", "A", new Integer(14), new Double(14.14)               };    data = new Object [] {               "Fifteen", "Blue", "A", new Integer(15), new Double(15.15)               };    data = new Object [] {               "Sixteen", "Blue", "A", new Integer(16), new Double(16.16)               };    data = new Object [] {               "Seventeen", "Blue", "A", new Integer(17), new Double(17.17)               };    data = new Object [] {               "Eighteen", "Blue", "A", new Integer(18), new Double(18.18)               };    data = new Object [] {               "Nineteen", "Green", "B", new Integer(19), new Double(19.19)               };    data = new Object [] {               "Twenty", "Green", "B", new Integer(20), new Double(20.20)               };    data = new Object [] {               "Twenty One", "Green", "B", new Integer(21), new Double(21.21)               };    data = new Object [] {               "Twenty Two", "Green", "B", new Integer(22), new Double(22.22)               };    data = new Object [] {               "Twenty Three", "Green", "B", new Integer(23),               new Double(23.23)               };    data = new Object [] {               "Twenty Four", "Green", "B", new Integer(24), new Double(24.24)               };    data = new Object [] {               "Twenty Five", "Green", "B", new Integer(25), new Double(25.25)               };    data = new Object [] {               "Twenty Six", "Green", "B", new Integer(26), new Double(26.26)               };    data = new Object [] {               "Twenty Seven", "Green", "B", new Integer(27),               new Double(27.27)               };    data = new Object [] {               "Twenty Eight", "Green", "B", new Integer(28),               new Double(28.28)               };    data = new Object [] {               "Twenty Nine", "Red", "C", new Integer(29), new Double(29.29)               };    data = new Object [] {               "Thirty", "Red", "C", new Integer(30), new Double(30.30)               };    data = new Object [] {               "Thirty One", "Red", "C", new Integer(31), new Double(31.31)               };    data = new Object [] {               "Thirty Two", "Red", "C", new Integer(32), new Double(32.32)               };    data = new Object [] {               "Thirty Three", "Red", "C", new Integer(33), new Double(33.33)               };    data = new Object [] {               "Thirty Four", "Red", "C", new Integer(34), new Double(34.34)               };    data = new Object [] {               "Thirty Five", "Red", "C", new Integer(35), new Double(35.35)               };    data = new Object [] {               "Thirty Six", "Red", "C", new Integer(36), new Double(36.36)               };    data = new Object [] {               "Thirty Seven", "Blue", "C", new Integer(37), new Double(37.37)               };    data = new Object [] {               "Thirty Eight", "Blue", "C", new Integer(38), new Double(38.38)               };    data = new Object [] {               "Thirty Nine", "Blue", "C", new Integer(39), new Double(39.39)               };    data = new Object [] {               "Forty", "Blue", "C", new Integer(40), new Double(40.40)               };    data = new Object [] {               "Forty One", "Blue", "C", new Integer(41), new Double(41.41)               };    data = new Object [] {               "Forty Two", "Blue", "C", new Integer(42), new Double(42.42)               };    data = new Object [] {               "Forty Three", "Blue", "D", new Integer(43), new Double(43.43)               };    data = new Object [] {               "Forty Four", "Blue", "D", new Integer(44), new Double(44.44)               };    data = new Object [] {               "Forty Five", "Blue", "D", new Integer(45), new Double(45.45)               };    data = new Object [] {               "Forty Six", "Blue", "D", new Integer(46), new Double(46.46)               };    data = new Object [] {               "Forty Seven", "Blue", "D", new Integer(47), new Double(47.47)               };    data = new Object [] {               "Forty Eight", "Blue", "D", new Integer(48), new Double(48.48)               };    data = new Object [] {               "Forty Nine", "Blue", "D", new Integer(49), new Double(49.49)               };    data = new Object [] {               "Fifty", "Blue", "D", new Integer(50), new Double(50.50)               };    data = new Object [] {               "Fifty One", "Blue", "D", new Integer(51), new Double(51.51)               };    data = new Object [] {               "Fifty Two", "Blue", "D", new Integer(52), new Double(52.52)               };    data = new Object [] {               "Fifty Three", "Blue", "D", new Integer(53), new Double(53.53)               };    data = new Object [] {               "Fifty Four", "Blue", "D", new Integer(54), new Double(54.54)               };    data = new Object [] {               "Fifty Five", "Blue", "D", new Integer(55), new Double(55.55)               };    data = new Object [] {               "Fifty Six", "Blue", "D", new Integer(56), new Double(56.56)               };    data = new Object [] {               "Fifty Seven", "Blue", "D", new Integer(57), new Double(57.57)               };    data = new Object [] {               "Fifty Eight", "Blue", "D", new Integer(58), new Double(58.58)               };    data = new Object [] {               "Fifty Nine", "Blue", "D", new Integer(59), new Double(59.59)               };    data = new Object [] {               "Sixty", "Blue", "D", new Integer(60), new Double(60.60)               };    data = new Object [] {               "Sixty One", "Blue", "D", new Integer(61), new Double(61.60)               };    data = new Object [] {               "Sixty Two", "Blue", "D", new Integer(62), new Double(62.60)               };    data = new Object [] {               "Sixty Three", "Blue", "D", new Integer(63), new Double(63.60)               };    data = new Object [] {               "Sixty Four", "Blue", "D", new Integer(64), new Double(64.60)               };    data = new Object [] {               "Sixty Five", "Blue", "D", new Integer(65), new Double(65.60)               };    data = new Object [] {               "Sixty Six", "Blue", "D", new Integer(66), new Double(66.60)               };    data = new Object [] {               "Sixty Seven", "Blue", "D", new Integer(67), new Double(67.60)               };    data = new Object [] {               "Sixty Eight", "Blue", "D", new Integer(68), new Double(68.60)               };    data = new Object [] {               "Sixty Nine", "Blue", "D", new Integer(69), new Double(69.60)               };    data = new Object [] {               "Seventy", "Blue", "D", new Integer(70), new Double(70.60)               };    data = new Object [] {               "Seventy One", "Blue", "D", new Integer(71), new Double(71.60)               };    data = new Object [] {               "Seventy Two", "Blue", "D", new Integer(72), new Double(72.60)               };    data = new Object [] {               "Seventy Three", "Blue", "D", new Integer(73),               new Double(73.60)               };    data = new Object [] {               "Seventy Four", "Blue", "D", new Integer(74), new Double(74.60)               };    data = new Object [] {               "Seventy Five", "Blue", "D", new Integer(75), new Double(75.60)               };    data = new Object [] {               "Seventy Six", "Blue", "D", new Integer(76), new Double(76.60)               };    data = new Object [] {               "Seventy Seven", "Blue", "D", new Integer(77),               new Double(77.60)               };    data = new Object [] {               "Seventy Eight", "Blue", "D", new Integer(78),               new Double(78.60)               };    data = new Object [] {               "Seventy Nine", "Blue", "D", new Integer(79), new Double(79.60)               };    data = new Object [] {               "Eighty", "Blue", "D", new Integer(80), new Double(80.60)               };    data = new Object [] {               "Eighty One", "Blue", "D", new Integer(81), new Double(81.60)               };    data = new Object [] {               "Eighty Two", "Blue", "D", new Integer(82), new Double(82.60)               };    data = new Object [] {               "Eighty Three", "Blue", "D", new Integer(83), new Double(83.60)               };    data = new Object [] {               "Eighty Four", "Blue", "D", new Integer(84), new Double(84.60)               };    data = new Object [] {               "Eighty Five", "Blue", "D", new Integer(85), new Double(85.60)               };    data = new Object [] {               "Eighty Six", "Blue", "D", new Integer(86), new Double(86.60)               };    data = new Object [] {               "Eighty Seven", "Blue", "D", new Integer(87), new Double(87.60)               };    data = new Object [] {               "Eighty Eight", "Blue", "D", new Integer(88), new Double(88.60)               };    data = new Object [] {               "Eighty Nine", "Blue", "D", new Integer(89), new Double(89.60)               };    data = new Object [] {               "Ninety", "Blue", "D", new Integer(90), new Double(90.60)               };    data = new Object [] {               "Ninety One", "Blue", "D", new Integer(91), new Double(91.60)               };    data = new Object [] {               "Ninety Two", "Blue", "D", new Integer(92), new Double(92.60)               };    data = new Object [] {               "Ninety Three", "Blue", "D", new Integer(93), new Double(93.60)               };    data = new Object [] {               "Ninety Four", "Blue", "D", new Integer(94), new Double(94.60)               };    data = new Object [] {               "Ninety Five", "Blue", "D", new Integer(95), new Double(95.60)               };    data = new Object [] {               "Ninety Six", "Blue", "D", new Integer(96), new Double(96.60)               };    data = new Object [] {               "Ninety Seven", "Blue", "D", new Integer(97), new Double(97.60)               };    data = new Object [] {               "Ninety Eight", "Blue", "D", new Integer(98), new Double(98.60)               };    data = new Object [] {               "Ninety Nine", "Blue", "D", new Integer(99), new Double(99.60)               };    data = new Object [] {               "One Hundred", "Blue", "D", new Integer(100),               new Double(100.60)               };    data = new Object [] {                  "One Hundred and One", "Blue", "D", new Integer(101),                  new Double(101.60)                };    data = new Object [] {                  "One Hundred and Two", "Blue", "D", new Integer(102),                  new Double(102.60)                };    data = new Object [] {                  "One Hundred and Three", "Blue", "D", new Integer(103),                  new Double(103.60)                };    data = new Object [] {                  "One Hundred and Four", "Blue", "D", new Integer(104),                  new Double(104.60)                };    data = new Object [] {                  "One Hundred and Five", "Blue", "D", new Integer(105),                  new Double(105.60)                };    data = new Object [] {                  "One Hundred and Six", "Blue", "D", new Integer(106),                  new Double(106.60)                };    data = new Object [] {                  "One Hundred and Seven", "Blue", "D", new Integer(107),                  new Double(107.60)                };    data = new Object [] {                  "One Hundred and Eight", "Blue", "D", new Integer(108),                  new Double(108.60)                };    data = new Object [] {                  "One Hundred and Nine", "Blue", "D", new Integer(109),                  new Double(109.60)                };    data = new Object [] {                  "One Hundred and Ten", "Blue", "D", new Integer(110),                  new Double(110.60)                };    data = new Object [] {                  "One Hundred and Eleven", "Blue", "D", new Integer(111),                  new Double(111.60)                };    data = new Object [] {                  "One Hundred and Twelve", "Blue", "D", new Integer(112),                  new Double(112.60)                };    data = new Object [] {                  "One Hundred and Thirteen", "Blue", "D", new Integer(113),                  new Double(113.60)                };    data = new Object [] {                  "One Hundred and Fourteen", "Blue", "D", new Integer(114),                  new Double(114.60)                };    data = new Object [] {                  "One Hundred and Fifteen", "Blue", "D", new Integer(115),                  new Double(115.60)                };    data = new Object [] {                  "One Hundred and Sixteen", "Blue", "D", new Integer(116),                  new Double(116.60)                };    data = new Object [] {                  "One Hundred and Seventeen", "Blue", "D", new Integer(117),                  new Double(117.60)                };    data = new Object [] {                  "One Hundred and Eighteen", "Blue", "D", new Integer(118),                  new Double(118.60)                };    data = new Object [] {                  "One Hundred and Nineteen", "Blue", "D", new Integer(119),                  new Double(119.60)                };    data = new Object [] {                  "One Hundred and Twenty", "Blue", "D", new Integer(120),                  new Double(120.60)                };    Object [] names = { "���", "COLOR", "LETTER", "INTEGER", "DOUBLE" };    String filename = "f:\\exporttest.xls";    ExportXlsUtil test = new ExportXlsUtil();    try{      test.exportTableToXls(data, names, filename);    }catch(IOException e) {      e.printStackTrace();    }}} 
页: [1]
查看完整版本: 将表格保存成excel格式的文件