<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 閱讀(1292) 評論(0)  編輯  收藏 所屬分類: 【Java知識】
    主站蜘蛛池模板: 亚洲av最新在线观看网址| 亚洲伊人精品综合在合线| 美女被免费视频网站a| 免费永久看黄在线观看app| MM1313亚洲精品无码久久| 国产成人在线观看免费网站 | 国产成人1024精品免费| 亚洲精品一级无码鲁丝片 | 免费精品视频在线| 亚洲人成人网站在线观看| 一区二区三区免费视频观看| 国产黄色一级毛片亚洲黄片大全| 国产乱妇高清无乱码免费| 国产亚洲精品一品区99热| 无码精品人妻一区二区三区免费看 | 巨胸狂喷奶水视频www网站免费| 亚洲熟妇中文字幕五十中出| 96免费精品视频在线观看| 亚洲熟妇AV日韩熟妇在线| 又色又污又黄无遮挡的免费视 | 99久久人妻精品免费一区| 亚洲人成网男女大片在线播放| 在线观看免费国产视频| 成人a毛片视频免费看| 亚洲AV乱码久久精品蜜桃| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 特级无码毛片免费视频尤物| 亚洲人成在线精品| www.91亚洲| 日本免费一区二区三区四区五六区| 亚洲人成电影网站| 亚洲国产成人久久综合野外| 一级毛片aaaaaa免费看| 中国china体内裑精亚洲日本| 亚洲精品视频在线看| 8x8×在线永久免费视频| 欧美亚洲精品一区二区| 中文字幕在线亚洲精品| 9久9久女女免费精品视频在线观看 | 搜日本一区二区三区免费高清视频| 亚洲V无码一区二区三区四区观看|