<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);
        }
    }


                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 日本高清免费观看| 国产精品美女午夜爽爽爽免费| 麻豆亚洲AV永久无码精品久久| 日本片免费观看一区二区| 亚洲国产成人手机在线观看| 中文字幕亚洲日韩无线码| 日韩插啊免费视频在线观看| 亚洲中文字幕无码中文| 中文字幕日韩亚洲| 日本在线高清免费爱做网站| 日韩在线视频免费 | 亚洲高清日韩精品第一区| 精品剧情v国产在免费线观看 | 国产成人亚洲精品电影| 亚洲尹人九九大色香蕉网站| 在线观看免费国产视频| 美丽姑娘免费观看在线观看中文版| 久久精品熟女亚洲av麻豆| 久久久亚洲欧洲日产国码二区 | 伊人久久亚洲综合| 成年在线网站免费观看无广告| 最新亚洲成av人免费看| 亚洲精品国产首次亮相| 久久久亚洲欧洲日产国码二区| 亚洲电影日韩精品| 免费看国产成年无码AV片 | 亚洲av区一区二区三| 无码av免费毛片一区二区| 99在线免费观看| 色噜噜噜噜亚洲第一| 91亚洲国产成人久久精品网址| 亚洲乱码无码永久不卡在线| 国产精品冒白浆免费视频| 2020久久精品国产免费| 全部免费毛片在线播放| 中文字幕久无码免费久久| 亚洲AV色无码乱码在线观看| 亚洲三级在线免费观看| 亚洲短视频男人的影院| 亚洲情综合五月天| 亚洲美女在线国产|