<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知識】
    主站蜘蛛池模板: 97久久国产亚洲精品超碰热| jizz在线免费观看| 午夜亚洲国产成人不卡在线| 亚洲阿v天堂在线2017免费| 精品亚洲成a人片在线观看少妇| 成人免费淫片在线费观看| 四虎影视在线看免费观看| 久久亚洲AV无码精品色午夜| 国产一级一片免费播放| 精品视频在线免费观看| 亚洲国产精品成人综合色在线| 亚洲精品成人网站在线观看 | 最近2019中文字幕mv免费看| 男女猛烈无遮掩视频免费软件| 99人中文字幕亚洲区| 四虎国产精品免费视| 亚洲一区免费在线观看| 一级毛片免费播放男男| 亚洲av成人一区二区三区| 亚洲精品国产成人片| 日本不卡视频免费| 四虎在线视频免费观看视频| 国产人成网在线播放VA免费| 亚洲日韩精品无码专区| 久久久久亚洲精品日久生情 | 免费观看国产精品| 免费精品国产自产拍在| 十八禁视频在线观看免费无码无遮挡骂过 | 亚洲A丁香五香天堂网| 国产免费看JIZZ视频| 日韩精品无码免费专区午夜不卡 | 久久精品乱子伦免费| 色妞www精品视频免费看| 亚洲一级毛片免费看| 久久久久亚洲精品美女| 亚洲午夜精品一级在线播放放| 日韩免费视频网站| 114一级毛片免费| 日本一卡精品视频免费 | 最近中文字幕mv手机免费高清| 99免费在线观看视频|