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

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

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

    posts - 78,  comments - 48,  trackbacks - 0
    原作者:SonyMusic
    在Java中讀取Excel文件的內容
    在這里,我使用的是一個叫Java Excel API的東西,類似的還有jakarta的POI,不過感覺那個
    太復雜了點兒。而且jxl對中文的支持相當的好,至少我在用的過程中一點問題沒出。

    一、下載地址
    http://www.andykhan.com/jexcelapi/

    二、特性
    可以讀取Excel 95, 97, 2000文件
    可以讀或寫Excel 97及其以后版本的的公式(不過我發現好像有bug)
    生成Excel 97格式的電子表格
    支持字體、數字和日期格式化
    支持單元格的顏色和陰影
    可以編輯現有的文件

    三、讀文件
    //聲明一下,記得后面要關閉哦。。
    Workbook workbook = null;

    try {
       workbook = Workbook.getWorkbook(new File("d:\\temp\\TestRead.xls"));
    } catch (Exception e) {
       throw new Exception("file to import not found!");
    }

    Sheet sheet = workbook.getSheet(0);
    Cell cell = null;

    int columnCount=3;
    int rowCount=sheet.getRows();
    for (int i = 0; i <rowCount; i++) {
       for (int j = 0; j <columnCount; j++) {
           //注意,這里的兩個參數,第一個是表示列的,第二才表示行
           cell=sheet.getCell(j, i);
           //要根據單元格的類型分別做處理,否則格式化過的內容可能會不正確
           if(cell.getType()==CellType.NUMBER){
               System.out.print(((NumberCell)cell).getValue());
           }
           else if(cell.getType()==CellType.DATE){
               System.out.print(((DateCell)cell).getDate());
           }
           else{
               System.out.print(cell.getContents());
           }
          
           //System.out.print(cell.getContents());
           System.out.print("\t");
       }
       System.out.print("\n");
    }
    //關閉它,否則會有內存泄露
    workbook.close();


    寫:wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    在Java中向Excel文件寫入內容


    四、導出數據到Excel文件中
    下面的例子,設置了數字、日期的格式,還有字體,顏色等。

    File tempFile=new File("d:/temp/output.xls");
    WritableWorkbook workbook = Workbook.createWorkbook(tempFile);
    WritableSheet sheet = workbook.createSheet("TestCreateExcel", 0);

    //一些臨時變量,用于寫到excel中
    Label l=null;
    jxl.write.Number n=null;
    jxl.write.DateTime d=null;

    //預定義的一些字體和格式,同一個Excel中最好不要有太多格式
    WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLUE);
    WritableCellFormat headerFormat = new WritableCellFormat (headerFont);

    WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.RED);
    WritableCellFormat titleFormat = new WritableCellFormat (titleFont);

    WritableFont detFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
    WritableCellFormat detFormat = new WritableCellFormat (detFont);

    NumberFormat nf=new NumberFormat("0.00000");  //用于Number的格式
    WritableCellFormat priceFormat = new WritableCellFormat (detFont, nf);

    DateFormat df=new DateFormat("yyyy-MM-dd");//用于日期的
    WritableCellFormat dateFormat = new WritableCellFormat (detFont, df);

    //剩下的事情,就是用上面的內容和格式創建一些單元格,再加到sheet中
    l=new Label(0, 0, "用于測試的Excel文件", headerFormat);
    sheet.addCell(l);

    //add Title
    int column=0;
    l=new Label(column++, 2, "標題", titleFormat);
    sheet.addCell(l);
    l=new Label(column++, 2, "日期", titleFormat);
    sheet.addCell(l);
    l=new Label(column++, 2, "貨幣", titleFormat);
    sheet.addCell(l);
    l=new Label(column++, 2, "價格", titleFormat);
    sheet.addCell(l);

    //add detail
    int i=0;
    column=0;
    l=new Label(column++, i+3, "標題 "+i, detFormat);
    sheet.addCell(l);
    d=new DateTime(column++, i+3, new java.util.Date(), dateFormat);
    sheet.addCell(d);
    l=new Label(column++, i+3, "CNY", detFormat);
    sheet.addCell(l);
    n=new jxl.write.Number(column++, i+3, 5.678, priceFormat);
    sheet.addCell(n);

    i++;
    column=0;
    l=new Label(column++, i+3, "標題 "+i, detFormat);
    sheet.addCell(l);
    d=new DateTime(column++, i+3, new java.util.Date(), dateFormat);
    sheet.addCell(d);
    l=new Label(column++, i+3, "SGD", detFormat);
    sheet.addCell(l);
    n=new jxl.write.Number(column++, i+3, 98832, priceFormat);
    sheet.addCell(n);

    //設置列的寬度
    column=0;
    sheet.setColumnView(column++, 20);
    sheet.setColumnView(column++, 20);
    sheet.setColumnView(column++, 10);
    sheet.setColumnView(column++, 20);

    workbook.write();
    workbook.close();


    要往xls文件里面寫入數據的時候需要注意的是第一要新建一個xls文件
    OutputStream os=new FileOutputStream("c:\\excel2.xls");

    再建完這個文件的時候再建立工作文件
    jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(os));

    如果這個文件已經存在,那么我們可以在這個文件里面加入一個sheet為了和以前的數據進行分開;
    jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
    在createSheet方法里前面的參數是sheet名,后面是要操作的sheet號

    接下來就可以往這個文件里面寫入數據了


    寫入數據的時候注意的格式


    (1)添加的字體樣式
    jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
    WritableFont()方法里參數說明:
    這個方法算是一個容器,可以放進去好多屬性
    第一個: TIMES是字體大小,他寫的是18
    第二個: BOLD是判斷是否為斜體,選擇true時為斜體
    第三個: ARIAL
    第四個: UnderlineStyle.NO_UNDERLINE 下劃線
    第五個: jxl.format.Colour.RED 字體顏色是紅色的

    jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);

    jxl.write.Label labelC = new jxl.write.Label(0, 0, "This is a Label cell",wcfF);
    ws.addCell(labelC);
    在Label()方法里面有三個參數
    第一個是代表列數,
    第二是代表行數,
    第三個代表要寫入的內容
    第四個是可選項,是輸入這個label里面的樣式
    然后通過寫sheet的方法addCell()把內容寫進sheet里面。

    (2)添加帶有formatting的Number對象
    jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");


    (3)添加Number對象
    (3.1)顯示number對象數據的格式

    jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
    jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);

    jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);
    ws.addCell(labelNF);
    Number()方法參數說明:
    前兩上表示輸入的位置
    第三個表示輸入的內容


    (4)添加Boolean對象
    jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);
    ws.addCell(labelB);


    (5)添加DateTime對象
    jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date());
    ws.addCell(labelDT);
    DateTime()方法的參數說明
    前兩個表示輸入的位置
    第三個表示輸入的當前時間


    (6)添加帶有formatting的DateFormat對象
    這個顯示當前時間的所有信息,包括年月日小時分秒
    jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss");
    jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
    jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3, new java.util.Date(), wcfDF);
    ws.addCell(labelDTF);

    (7)添加帶有字體顏色Formatting的對象
    jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
    jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);

    import="jxl.format.*
    jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);

    (8)設置單元格樣式

    jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
    wcfFC.setBackGround(jxl.format.Colour.RED);//設置單元格的顏色為紅色
    wcfFC = new jxl.write.Label(6,0,"i love china",wcfFC);

    利用JExcelApi來動態生成excel文檔

    首先,請到http://www.andykhan.com/jexcelapi/index.html下載java excel api,主頁上同時有比較詳細的介紹。最新版本為2.4.3,同時也可以到:http://www.andykhan.com/jexcelapi/jexcelapi_2_4_3.tar.gz下載到該最新版的API,由于該項目是開源的,所以下載的文件中已經包含了源代碼,同樣的,文件中也有javadoc,大家在開發中可以參考javadoc。

    下載完畢后,我們需要把文件中的jxl.jar加入到你的開發classpath中。
    下圖是現在要生產的excel截圖:
    http://blog.csdn.net/beming/gallery/image/3437.aspx

    代碼如下:

       File excel = new File("d:/aming.xls");
       if(!excel.exists()){
        excel.createNewFile();
       }   
       WritableWorkbook wwb = Workbook.createWorkbook(excel);
       WritableSheet ws = wwb.createSheet("testexcel",0);
       Label lable = null;
       
       //對中文的支持非常好
       lable = new Label(0,0,"我的中國心");
       ws.addCell(lable);
       
       //可以定義模板格式化你的cell
       WritableFont wf = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
       WritableCellFormat wcf = new WritableCellFormat(wf);
       wcf.setBackground(Colour.WHITE);
       lable = new Label(0,1,"fdsl",wcf);
       ws.addCell(lable);
       
       wf = new WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);
       wcf = new WritableCellFormat(wf);
       lable = new Label(0,2,"aming",wcf);
       ws.addCell(lable);
       
       //cell的類型同樣可以定義為數字類型
       Number nb = new Number(0,3,21.4321321);
       ws.addCell(nb);
       
       //支持格式化你的數字串
       NumberFormat nf = new NumberFormat("#.###");
       wcf = new WritableCellFormat(nf);
       nb = new Number(0,4,21.43254354354354,wcf);
       ws.addCell(nb);

       //cell的類型可以為boolean類型
       Boolean bl = new Boolean(0,5,true);
       ws.addCell(bl);

       //cell的類型同樣可以為日期,時間
       DateTime dt = new DateTime(0,6,new Date());
       ws.addCell(dt);

       //并且可以很好格式化你的日期格式
       DateFormat df = new DateFormat("MM dd yyyy hh:mm:ss");
       wcf = new WritableCellFormat(df);
       dt = new DateTime(0,7,new Date(),wcf);
       ws.addCell(dt);
       
       //開始寫文件了
       wwb.write();
       wwb.close();

    posted on 2006-01-16 15:34 黑咖啡 閱讀(2589) 評論(0)  編輯  收藏 所屬分類: tec

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(2)

    隨筆分類(67)

    文章分類(43)

    Good Article

    Good Blogs

    Open Source

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲高清免费在线观看| 精品免费久久久久国产一区 | 中文永久免费观看网站| 免费国产怡红院在线观看| 亚洲av乱码中文一区二区三区| 爱情岛论坛免费视频| 免费日本黄色网址| 亚洲精品亚洲人成在线观看麻豆 | 国产尤物在线视精品在亚洲| 日本无吗免费一二区| 丰满亚洲大尺度无码无码专线| 国产一精品一av一免费爽爽| 久久精品国产亚洲综合色| 免费国产99久久久香蕉| 亚洲国产成人久久精品动漫| 美丽的姑娘免费观看在线播放| 亚洲综合国产精品第一页| 成在线人免费无码高潮喷水| 亚洲成AV人片在线播放无码| 阿v免费在线观看| 国内精品99亚洲免费高清| 精品在线免费观看| 在线电影你懂的亚洲| 三年片在线观看免费观看高清电影 | 亚洲精品专区在线观看| 皇色在线免费视频| 亚洲Aⅴ无码一区二区二三区软件| 亚洲av乱码一区二区三区| 国产真人无遮挡作爱免费视频| 亚洲制服丝袜第一页| 亚洲精品免费在线观看| 亚洲中文字幕AV每天更新| a级亚洲片精品久久久久久久 | 亚洲精华国产精华精华液好用| 成人黄色免费网址| 久久久久亚洲AV无码观看| 免费涩涩在线视频网| 精品国产日韩久久亚洲| 精品久久久久成人码免费动漫 | 国产亚洲精品国产| 大地资源二在线观看免费高清|