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

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

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

    javainthinking

    XL的個(gè)性空間和java學(xué)習(xí)之旅

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      13 隨筆 :: 13 文章 :: 20 評(píng)論 :: 1 Trackbacks

    參考文章:http://www-128.ibm.com/developerworks/cn/java/l-javaExcel/index.html
    作了一些相應(yīng)的擴(kuò)充(讀取圖片等)

    JAVA EXCEL API簡(jiǎn)介

    Java Excel是一開(kāi)放源碼項(xiàng)目,通過(guò)它Java開(kāi)發(fā)人員可以讀取Excel文件的內(nèi)容、創(chuàng)建新的Excel文件、更新已經(jīng)存在的Excel文件。使用該API非Windows操作系統(tǒng)也可以通過(guò)純Java應(yīng)用來(lái)處理Excel數(shù)據(jù)表。因?yàn)槭鞘褂肑ava編寫(xiě)的,所以我們?cè)赪eb應(yīng)用中可以通過(guò)JSP、Servlet來(lái)調(diào)用API實(shí)現(xiàn)對(duì)Excel數(shù)據(jù)表的訪(fǎng)問(wèn)。

    提供以下功能:

    • 從Excel 95、97、2000等格式的文件中讀取數(shù)據(jù);
    • 讀取Excel公式(可以讀取Excel 97以后的公式);
    • 生成Excel數(shù)據(jù)表(格式為Excel 97);
    • 支持字體、數(shù)字、日期的格式化;
    • 支持單元格的陰影操作,以及顏色操作;
    • 修改已經(jīng)存在的數(shù)據(jù)表;
    • 能夠讀取圖表信息

    1.應(yīng)用示例
    包括從Excel讀取數(shù)據(jù),生成新的Excel,以及修改Excel
    package common.util;

    import jxl.*;
    import jxl.format.UnderlineStyle;
    import jxl.write.*;
    import jxl.write.Number;
    import jxl.write.Boolean;

    import java.io.*;

    /**
     * Created by IntelliJ IDEA.
     * User: xl
     * Date: 2005-7-17
     * Time: 9:33:22
     * To change this template use File | Settings | File Templates.
     */
    public class ExcelHandle
    {
        public ExcelHandle()
        {
        }

        /**
         * 讀取Excel
         *
         * @param filePath
         */
        public static void readExcel(String filePath)
        {
            try
            {
                InputStream is = new FileInputStream(filePath);
                Workbook rwb = Workbook.getWorkbook(is);
                //Sheet st = rwb.getSheet("0")這里有兩種方法獲取sheet表,1為名字,而為下標(biāo),從0開(kāi)始
                Sheet st = rwb.getSheet("original");
                Cell c00 = st.getCell(0,0);
                //通用的獲取cell值的方式,返回字符串
                String strc00 = c00.getContents();
                //獲得cell具體類(lèi)型值的方式
                if(c00.getType() == CellType.LABEL)
                {
                    LabelCell labelc00 = (LabelCell)c00;
                    strc00 = labelc00.getString();
                }
                //輸出
                System.out.println(strc00);
                //關(guān)閉
                rwb.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }

        /**
         * 輸出Excel
         *
         * @param os
         */
        public static void writeExcel(OutputStream os)
        {
            try
            {
                /**
                 * 只能通過(guò)API提供的工廠(chǎng)方法來(lái)創(chuàng)建Workbook,而不能使用WritableWorkbook的構(gòu)造函數(shù),
                 * 因?yàn)轭?lèi)WritableWorkbook的構(gòu)造函數(shù)為protected類(lèi)型
                 * method(1)直接從目標(biāo)文件中讀取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
                 * method(2)如下實(shí)例所示 將WritableWorkbook直接寫(xiě)入到輸出流

                 */
                WritableWorkbook wwb = Workbook.createWorkbook(os);
                //創(chuàng)建Excel工作表 指定名稱(chēng)和位置
                WritableSheet ws = wwb.createSheet("Test Sheet 1",0);

                //**************往工作表中添加數(shù)據(jù)*****************

                //1.添加Label對(duì)象
                Label label = new Label(0,0,"this is a label test");
                ws.addCell(label);

                //添加帶有字型Formatting對(duì)象
                WritableFont wf = new WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);
                WritableCellFormat wcf = new WritableCellFormat(wf);
                Label labelcf = new Label(1,0,"this is a label test",wcf);
                ws.addCell(labelcf);

                //添加帶有字體顏色的Formatting對(duì)象
                WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,
                        UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
                WritableCellFormat wcfFC = new WritableCellFormat(wfc);
                Label labelCF = new Label(1,0,"This is a Label Cell",wcfFC);
                ws.addCell(labelCF);

                //2.添加Number對(duì)象
                Number labelN = new Number(0,1,3.1415926);
                ws.addCell(labelN);

                //添加帶有formatting的Number對(duì)象
                NumberFormat nf = new NumberFormat("#.##");
                WritableCellFormat wcfN = new WritableCellFormat(nf);
                Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN);
                ws.addCell(labelNF);

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

                //4.添加DateTime對(duì)象
                jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date());
                ws.addCell(labelDT);

                //添加帶有formatting的DateFormat對(duì)象
                DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
                WritableCellFormat wcfDF = new WritableCellFormat(df);
                DateTime labelDTF = new DateTime(1,3,new java.util.Date(),wcfDF);
                ws.addCell(labelDTF);

                //添加圖片對(duì)象,jxl只支持png格式圖片
                File image = new File("f:\\2.png");
                WritableImage wimage = new WritableImage(0,1,2,2,image);//0,1分別代表x,y.2,2代表寬和高占的單元格數(shù)
                ws.addImage(wimage);
                //寫(xiě)入工作表
                wwb.write();
                wwb.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }

        /**
         * 拷貝后,進(jìn)行修改,其中file1為被copy對(duì)象,file2為修改后創(chuàng)建的對(duì)象
         * 盡單元格原有的格式化修飾是不能去掉的,我們還是可以將新的單元格修飾加上去,
         * 以使單元格的內(nèi)容以不同的形式表現(xiàn)
         * @param file1
         * @param file2
         */
        public static void modifyExcel(File file1,File file2)
        {
            try
            {
                Workbook rwb = Workbook.getWorkbook(file1);
                WritableWorkbook wwb = Workbook.createWorkbook(file2,rwb);//copy
                WritableSheet ws = wwb.getSheet(0);
                WritableCell wc = ws.getWritableCell(0,0);
                //判斷單元格的類(lèi)型,做出相應(yīng)的轉(zhuǎn)換
                if(wc.getType == CellType.LABEL)
                {
                    Label label = (Label)wc;
                    label.setString("The value has been modified");
                }
                wwb.write();
                wwb.close();
                rwb.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }

        //測(cè)試
        public static void main(String[] args)
        {
            try
            {
                //讀Excel
                ExcelHandle.readExcel("f:/testRead.xls");
                //輸出Excel
                File fileWrite = new File("f:/testWrite.xls");
                fileWrite.createNewFile();
                OutputStream os = new FileOutputStream(fileWrite);
                ExcelHandle.writeExcel(os);
                //修改Excel
                ExcelHandle.modifyExcel(new file(""),new File(""));
            }
            catch(Exception e)
            {
               e.printStackTrace();
            }
        }
    }

    2.在jsp中做相關(guān)測(cè)試,創(chuàng)建一個(gè)writeExcel.jsp
    <%
    response.reset();//清除Buffer
    response.setContentType("application/vnd.ms-excel");
    File fileWrite = new File("f:/testWrite.xls");
    fileWrite.createNewFile();
    new FileOutputStream(fileWrite);
    ExcelHandle.writeExcel(new FileOutputStream(fileWrite));

    %>
    在IE中瀏覽writeExcel.jsp就可以動(dòng)態(tài)生成Excel文檔了,其中
    response.setContentType("application/vnd.ms-excel");語(yǔ)句必須要,才能確保不亂碼,在jsp中輸入<%@page contentType="application/vnd.ms-excel;charset=GBK"%>不行。


    評(píng)論

    # 利用JAVA操作EXCEL文件(JAVA EXCEL API)[TrackBack] 2005-10-23 17:52 naive1010
    Ping Back來(lái)自:blog.csdn.net
    [引用提示]naive1010引用了該文章, 地址: http://blog.csdn.net/naive1010/archive/2005/10/23/514123.aspx  回復(fù)  更多評(píng)論
      

    # re: 利用JAVA操作EXCEL文件(JAVA EXCEL API) 2007-08-22 09:25 xx
    為什么不能導(dǎo)入Workbook等,我用的是eclipse5.2,jdk1.5  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲人成电影院在线观看| 国产亚洲一区二区三区在线| 中文字幕视频免费在线观看| 2017亚洲男人天堂一| 亚洲一区二区三区无码中文字幕| 成人黄动漫画免费网站视频| 亚洲色偷偷色噜噜狠狠99| 亚洲s色大片在线观看| 久久国产色AV免费观看| 亚洲午夜成激人情在线影院 | 久久亚洲免费视频| 国产免费131美女视频| 97热久久免费频精品99| 亚洲AV永久无码精品放毛片| 亚洲黄色片免费看| 国产偷v国产偷v亚洲高清| 亚洲高清无码在线观看| 无码免费一区二区三区免费播放 | 好先生在线观看免费播放| 美美女高清毛片视频黄的一免费| 亚洲午夜精品在线| 亚洲无人区视频大全| 久久精品九九亚洲精品天堂| 99久久这里只精品国产免费| 99re6热视频精品免费观看| 色天使亚洲综合在线观看| 亚洲国产精品丝袜在线观看| 日韩精品免费一区二区三区| 最新国产乱人伦偷精品免费网站 | 中文字幕不卡亚洲 | 妞干网手机免费视频| a一级毛片免费高清在线| 亚洲AV无码专区国产乱码不卡| 激情综合亚洲色婷婷五月APP| 亚洲精品A在线观看| 国产hs免费高清在线观看| 日韩在线看片免费人成视频播放| 德国女人一级毛片免费| 毛片免费观看网址| 免费黄色一级毛片| 免费国产高清视频|