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

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

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

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    操作Excel文件

    Posted on 2009-05-30 23:37 啥都寫點 閱讀(282) 評論(0)  編輯  收藏 所屬分類: J2SE
    關鍵技術:
    • 一個Excel文檔從大島小可以分成如下幾個要素:工作簿、工作表、行、單元格,在poi的類庫中用不同的類描述。
    • org.apache.poi.hssf.usermodel.HSSFWorkbook表示一個Excel文檔。它的createSheet方法為文檔創建新工作表;getSheet方法獲取工作簿的工作表;write方法將文檔對象保存到文件中。
    • org.apache.poi.hssf.usermodel.HSSFSheet表示Excel文檔中的--工作表。它的createRow方法為當前工作表創建新行;getRow方法獲得當前工作表的某行。
    • org.apache.poi.hssf.usermodel.HSSFRow表示Excel文檔中的行。它的createCell方法為當前行創建一個單元格;getCell方法獲得當前行的某單元格。
    • org.apache.poi.hssf.usermodel.HSSFCell表示Excel文檔中的單元格。它的setCellType方法設置單元格的字符類型,如日期類型、數字類型等;setEncoding方法設置單元格的字符編碼方式;setCellStyle方法設置單元格的格式,如字體、居中對齊等;setCellValue方法設置單元格的值。

    package book.io;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;

    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.Region;

    /**
     * 去http://jakarta.apache.org/site/downloads/downloads_poi.cgi下載poi項目相關的jar包和文檔
     
    */
    public class ExcelFile {

        
    /**
         * 新建一個Excel文件,里面添加5行5列的內容,再添加兩個高度為2的大單元格。
         * 
         * 
    @param fileName
         
    */
        
    public void writeExcel(String fileName) {

            
    //目標文件
            File file = new File(fileName);
            FileOutputStream fOut 
    = null;
            
    try {
                
    //    創建新的Excel 工作簿
                HSSFWorkbook workbook = new HSSFWorkbook();

                
    //    在Excel工作簿中建一工作表,其名為缺省值。
                
    //    也可以指定工作表的名字。
                HSSFSheet sheet = workbook.createSheet("Test_Table");

                
    //  創建字體,紅色、粗體
                HSSFFont font = workbook.createFont();
                font.setColor(HSSFFont.COLOR_RED);
                font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

                
    //  創建單元格的格式,如居中、左對齊等
                HSSFCellStyle cellStyle = workbook.createCellStyle();
                
    //  水平方向上居中對齊
                cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                
    //  垂直方向上居中對齊
                cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
                
    //  設置字體
                cellStyle.setFont(font);

                
    //下面將建立一個4行3列的表。第一行為表頭。
                int rowNum = 0;//行標
                int colNum = 0;//列標
                
    //建立表頭信息
                
    //    在索引0的位置創建行(最頂端的行)
                HSSFRow row = sheet.createRow((short) rowNum);
                
    //  單元格
                HSSFCell cell = null;
                
    for (colNum = 0; colNum < 5; colNum++) {
                    
    //    在當前行的colNum列上創建單元格
                    cell = row.createCell((short) colNum);

                    
    //    定義單元格為字符類型,也可以指定為日期類型、數字類型
                    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                    
    //  定義編碼方式,為了支持中文,這里使用了ENCODING_UTF_16
                    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                    
    //  為單元格設置格式
                    cell.setCellStyle(cellStyle);

                    
    //    添加內容至單元格
                    cell.setCellValue("表頭名-" + colNum);
                }
                rowNum
    ++;
                
    for (; rowNum < 5; rowNum++) {
                    
    //  新建第rowNum行
                    row = sheet.createRow((short) rowNum);
                    
    for (colNum = 0; colNum < 5; colNum++) {
                        
    // 在當前行的colNum位置創建單元格
                        cell = row.createCell((short) colNum);
                        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                        cell.setCellStyle(cellStyle);
                        cell.setCellValue(
    "值-" + rowNum + "-" + colNum);
                    }
                }

                
    //  合并單元格
                
    //  先創建2行5列的單元格,然后將這些單元格合并為2個大單元格
                rowNum = 5;
                
    for (; rowNum < 7; rowNum++) {
                    row 
    = sheet.createRow((short) rowNum);
                    
    for (colNum = 0; colNum < 5; colNum++) {
                        
    // 在當前行的colNum位置創建單元格
                        cell = row.createCell((short) colNum);
                    }
                }
                
    //建立第一個大單元格,高度為2,寬度為2
                rowNum = 5;
                colNum 
    = 0;
                Region region 
    = new Region(rowNum, (short) colNum, (rowNum + 1),
                        (
    short) (colNum + 1));
                sheet.addMergedRegion(region);
                
    //獲得第一個大單元格
                cell = sheet.getRow(rowNum).getCell((short) colNum);
                cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                cell.setCellStyle(cellStyle);
                cell.setCellValue(
    "第一個大單元格");

                
    //建立第二個大單元格,高度為2,寬度為3
                colNum = 2;
                region 
    = new Region(rowNum, (short) colNum, (rowNum + 1),
                        (
    short) (colNum + 2));
                sheet.addMergedRegion(region);
                
    //獲得第二個大單元格
                cell = sheet.getRow(rowNum).getCell((short) colNum);
                cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                cell.setCellStyle(cellStyle);
                cell.setCellValue(
    "第二個大單元格");

                
    //  工作薄建立完成,下面將工作薄存入文件
                
    //    新建一輸出文件流
                fOut = new FileOutputStream(file);
                
    //    把相應的Excel 工作簿存盤
                workbook.write(fOut);
                fOut.flush();
                
    //    操作結束,關閉文件
                fOut.close();

                System.out
                        .println(
    "Excel文件生成成功!Excel文件名:" + file.getAbsolutePath());
            } 
    catch (Exception e) {
                System.out.println(
    "Excel文件" + file.getAbsolutePath()  + "生成失敗:" + e);
            } 
    finally {
                
    if (fOut != null){
                    
    try {
                        fOut.close();
                    } 
    catch (IOException e1) {
                    }
                }
            }
        }

        
    /**
         * 讀Excel文件內容
         * 
         * 
    @param fileName
         
    */
        
    public void readExcel(String fileName) {
            
            File file 
    = new File(fileName);
            FileInputStream in 
    = null;
            
    try {
                
    //    創建對Excel工作簿文件的引用
                in = new FileInputStream(file);
                HSSFWorkbook workbook 
    = new HSSFWorkbook(in);

                
    //    創建對工作表的引用。
                
    //    這里使用按名引用
                HSSFSheet sheet = workbook.getSheet("Test_Table");
                
    //    也可用getSheetAt(int index)按索引引用,
                
    //    在Excel文檔中,第一張工作表的缺省索引是0,其語句為:
                
    //    HSSFSheet sheet = workbook.getSheetAt(0);

                
    //下面讀取Excel的前5行的數據
                System.out.println("下面是Excel文件" + file.getAbsolutePath() + "的內容:");
                HSSFRow row 
    = null;
                HSSFCell cell 
    = null;
                
    int rowNum = 0;//行標
                int colNum = 0;//列標
                for (; rowNum < 5; rowNum++) {
                    
    //  獲取第rowNum行
                    row = sheet.getRow((short) rowNum);
                    
    for (colNum = 0; colNum < 5; colNum++) {
                        
    // 獲取當前行的colNum位置的單元格
                        cell = row.getCell((short) colNum);
                        System.out.print(cell.getStringCellValue() 
    + "\t");
                    }
                    
    //換行
                    System.out.println();
                }

                in.close();
            } 
    catch (Exception e) {
                System.out.println(
    "讀取Excel文件" + file.getAbsolutePath() + "失敗:" + e);
            }  
    finally {
                
    if (in != null){
                    
    try {
                        in.close();
                    } 
    catch (IOException e1) {
                    }
                }
            }

        }
        
    public static void main(String[] args) throws Exception {
            ExcelFile excel 
    = new ExcelFile();
            String fileName 
    = "c:/temp/temp.xls";
            excel.writeExcel(fileName);
            excel.readExcel(fileName);
        }
    }


                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 丁香五月亚洲综合深深爱| 国产伦精品一区二区三区免费下载| 亚洲精品国产成人影院| 最新国产精品亚洲| 毛片网站免费在线观看| 男人天堂2018亚洲男人天堂| 最近中文字幕免费mv在线视频| 亚洲av日韩综合一区在线观看| 叮咚影视在线观看免费完整版| 国产L精品国产亚洲区久久| 视频免费1区二区三区| 全亚洲最新黄色特级网站| 亚洲AV无码一区二区一二区| 爽爽日本在线视频免费| 亚洲乱码无人区卡1卡2卡3| 日本免费高清一本视频| 四虎国产精品成人免费久久| 亚洲精品午夜无码专区| 无码午夜成人1000部免费视频| 亚洲午夜精品久久久久久人妖| 在线视频精品免费| 亚洲欧美国产欧美色欲| 亚洲AⅤ永久无码精品AA| 一级免费黄色大片| 亚洲AV无码一区二区乱子伦| 69pao强力打造免费高清| 亚洲成人激情小说| 免费一级毛片不卡不收费| 免费无码黄网站在线看| 亚洲伊人色一综合网| 国产免费小视频在线观看| 中文字幕永久免费视频| 亚洲成aⅴ人在线观看| 日韩免费一区二区三区| 中文字幕看片在线a免费| 亚洲国产综合在线| 亚洲 自拍 另类小说综合图区 | 美女在线视频观看影院免费天天看| 久久亚洲中文字幕精品有坂深雪 | 亚洲成AV人片一区二区密柚| 中文字幕无码不卡免费视频|