<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

    最近在做我們的JAVA課程設計,我的設計里面涉及到了對信息的導出,包括導出Excel和Pdf.在網上查了有關Poi的資料查了很久終于寫出了滿足自己需求的程序.以下是程序的全部代碼:

    (一)SheetDataSource.java

     

    package com.javaeye.yongsky;

    import java.sql.*;
    import java.util.*;

    import com.microsoft.jdbc.*;

    public class SheetDataSource {

     
    private static Connection con ;
     
     
    private static final String DatabaseName = "POIDEMO";
     
     
    private static final String userName = "sa";
     
     
    private static final String password = "123";
     
     
    public SheetDataSource()
     
    {
      
    try {
       Class.forName(
    "com.microsoft.jdbc.sqlserver.SQLServerDriver");
       
    try {
         con 
    = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName="+DatabaseName,userName,password);
       }
     catch (SQLException e) {
        e.printStackTrace();
       }

      }
     catch (ClassNotFoundException e) {
       e.printStackTrace();
      }

     }

     
     
    public static ResultSet selectAllDataFromDB() throws SQLException 
     

       
    new SheetDataSource();
       Statement stmt 
    = con.createStatement();
       
    return stmt.executeQuery("select * from COMPANY");
     }

     
    }


    上面部分代碼主要是從數據庫里面取出數據,作為Excel的數據源.

    (二)PoiDemo.java

    package com.javaeye.yongsky;

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.*;

    import javax.swing.JOptionPane;

    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFFooter;
    import org.apache.poi.hssf.usermodel.HSSFHeader;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    public class PoiDemo {

        
    //表頭
        public static final String[] tableHeader = {"企業中文名","所屬國家","企業英文名","2003年排名","2004年排名","2005年排名",
            
    "2006年排名","2007年排名","主要業務","2003年營業額","2004年營業額","2005年營業額","2006年營業額","2007年營業額","企業編號","名次升降",
            
    "圖片","狀況"}
    ;
        
    //創建工作本
        public static HSSFWorkbook demoWorkBook = new HSSFWorkbook();
        
    //創建表
        public static HSSFSheet demoSheet = demoWorkBook.createSheet("The World's 500 Enterprises");
        
    //表頭的單元格個數目
        public static final short cellNumber = (short)tableHeader.length;
        
    //數據庫表的列數
        public static final int columNumber = 18;
        
    /**
         * 創建表頭
         * 
    @return
         
    */

        
    public static void createTableHeader()
        
    {
            HSSFHeader header 
    = demoSheet.getHeader();
            header.setCenter(
    "世界五百強企業名次表");
            HSSFRow headerRow 
    = demoSheet.createRow((short0);
            
    for(int i = 0;i < cellNumber;i++)
            
    {
                HSSFCell headerCell 
    = headerRow.createCell((short) i);
                headerCell.setEncoding(HSSFCell.ENCODING_UTF_16);
                headerCell.setCellValue(tableHeader[i]);
            }

        }

        
    /**
         * 創建行
         * 
    @param cells
         * 
    @param rowIndex
         
    */

        
    public static void createTableRow(List<String> cells,short rowIndex)
        
    {
            
    //創建第rowIndex行
            HSSFRow row = demoSheet.createRow((short) rowIndex);
            
    for(short i = 0;i < cells.size();i++)
            
    {
                
    //創建第i個單元格
                HSSFCell cell = row.createCell((short) i);
                cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                cell.setCellValue(cells.get(i));
            }

        }

        
        
    /**
         * 創建整個Excel表
         * 
    @throws SQLException 
         *
         
    */

        
    public static void createExcelSheeet() throws SQLException
        
    {
            createTableHeader();
            ResultSet rs 
    = SheetDataSource.selectAllDataFromDB();
            
    int rowIndex = 1;
            
    while(rs.next())
            
    {
                List
    <String> list = new ArrayList<String>();
                
    for(int i = 1;i <= columNumber;i++)
                
    {
                    list.add(rs.getString(i));
                }

                createTableRow(list,(
    short)rowIndex);
                rowIndex
    ++;
            }

        }

        
    /**
         * 導出表格
         * 
    @param sheet
         * 
    @param os
         * 
    @throws IOException
         
    */

        
    public void exportExcel(HSSFSheet sheet,OutputStream os) throws IOException
        
    {
            sheet.setGridsPrinted(
    true);
            HSSFFooter footer 
    = sheet.getFooter();
            footer.setRight(
    "Page " + HSSFFooter.page() + " of " +
            HSSFFooter.numPages());
            demoWorkBook.write(os);
        }

        
        
    public static void main(String[] args) {
            String fileName 
    = "D:\\世界五百強企業名次表.xls";
             FileOutputStream fos 
    = null;
                
    try {
                    PoiDemo pd 
    = new PoiDemo();
                    pd.createExcelSheeet();
                    fos 
    = new FileOutputStream(fileName);
                    pd.exportExcel(demoSheet,fos);
                    JOptionPane.showMessageDialog(
    null"表格已成功導出到 : "+fileName);
                }
     catch (Exception e) {
                    JOptionPane.showMessageDialog(
    null"表格導出出錯,錯誤信息 :"+e+"\n錯誤原因可能是表格已經打開。");
                    e.printStackTrace();
                }
     finally {
                    
    try {
                        fos.close();
                    }
     catch (Exception e) {
                        e.printStackTrace();
                    }

                }

        }

    }


    另外在附件里面附帶有本程序所用的所有資源,包括源代碼文件,數據庫和POI的JAR包,歡迎有興趣的朋友參考,并提出寶貴的意見.
    致謝 : 
         本程序的數據庫由兄弟溫總提供,為了不讓他免費為我們提供他辛辛苦苦做出數據庫而感到心里不平衡,在此向他表示感謝! 

    posted on 2008-11-18 15:18 rogerfan 閱讀(1291) 評論(0)  編輯  收藏 所屬分類: 【Java知識】
    主站蜘蛛池模板: 久久w5ww成w人免费| 九九久久国产精品免费热6| 免费无码一区二区三区| 久久精品视频亚洲| 1000部无遮挡拍拍拍免费视频观看| 亚洲国产AV无码专区亚洲AV| 久久国产乱子伦精品免费一 | 一区二区视频免费观看| 亚洲一区二区三区国产精品| 久久久久久久国产免费看| 丝袜熟女国偷自产中文字幕亚洲| 中文在线观看永久免费| 亚洲国产精品久久| xx视频在线永久免费观看| 中文字幕亚洲综合小综合在线 | 亚洲视频免费播放| 操美女视频免费网站| 老牛精品亚洲成av人片| 亚洲裸男gv网站| 蜜桃成人无码区免费视频网站 | 国产精品偷伦视频免费观看了 | 国产免费av片在线播放| 一级毛片a女人刺激视频免费 | 亚洲级αV无码毛片久久精品| 国产好大好硬好爽免费不卡| 亚洲中文无码线在线观看| 国外成人免费高清激情视频| 在线观看国产一区亚洲bd| 国产自偷亚洲精品页65页| 97视频免费观看2区| 亚洲精品无播放器在线播放 | 综合自拍亚洲综合图不卡区| 青青草国产免费久久久下载 | 久久av免费天堂小草播放| 99久久亚洲综合精品成人网| 国产一精品一AV一免费孕妇 | 一级毛片免费一级直接观看| 亚洲精品中文字幕麻豆| 免费人成视频在线观看不卡| 日韩免费观看一区| 青草久久精品亚洲综合专区|