Java 操作 Excel

import java.io.File;
import java.io.IOException;
import java.util.List;

import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.*;
import jxl.Cell;
import jxl.Sheet;
import jxl.write.Number;

/**
 * jxl只支持 xls 格式的Excel,不支持 xlsx 格式
 */
public class JxlExcelUtil {

    /**
     * 創(chuàng)建Excel
     * @param excelFilePath
     */
    public void CreateExcel(String excelFilePath) {
        try {
            // 打開文件
            WritableWorkbook book = Workbook.createWorkbook(new File(excelFilePath));
            // 判斷sheet(0)是否已經(jīng)存在胶哲,若存在泵琳,則刪除
            if (book.getSheet("第一頁") != null) {
                book.removeSheet(0);
            }
            // 生成名為“第一頁”的工作表,參數(shù)0表示這是第一頁
            WritableSheet sheet = book.createSheet("第一頁", 0);
            // 在Label對象的構(gòu)造子中指名單元格位置是第一列第一行(0,0)
            // 以及單元格內(nèi)容為test
            Label label = new Label(0, 0, "test");
            // 將定義好的單元格添加到工作表中
            sheet.addCell(label);

            Number number = new Number(1, 0, 555.12541);
            sheet.addCell(number);
            // 寫入數(shù)據(jù)并關(guān)閉文件
            book.write();
            book.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    /**
     * 指定讀取單個(gè)Excel
     * @param exeFilePath
     */
    public void ReadExcel(String exeFilePath) {
        try {
            Workbook book = Workbook.getWorkbook(new File(exeFilePath));
            // 獲得第一個(gè)工作表對象
            Sheet sheet = book.getSheet(0);
            // 得到第一列第一行的單元格
            Cell cell1 = sheet.getCell(0, 0);
            String result = cell1.getContents();
            System.out.println(result);
            book.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    /**
     * 修改Excel內(nèi)容
     * @param exeFilePath
     */
    public void UpdateExcel(String exeFilePath){
        try {
            // Excel獲得文件
            Workbook wb = Workbook.getWorkbook(new File(exeFilePath));
            // 打開一個(gè)文件的副本已艰,并且指定數(shù)據(jù)寫回到原文件
            WritableWorkbook book = Workbook.createWorkbook(new File(exeFilePath),
                    wb);
            // 添加一個(gè)工作表
//            WritableSheet sheet = book.createSheet("第3頁", 2);
//            若”第二頁“已經(jīng)存在,在直接getSheet即可
            WritableSheet sheet = book.getSheet("3.實(shí)際結(jié)果");

            sheet.addCell(new Label(0, 0, "TestJet"));
            book.write();
            book.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    /**
     * 循環(huán)讀取Excel內(nèi)容
     * @param excelFilePath
     * */
    public StringBuilder WhileReadExcel(String excelFilePath){
        String apiurl = null;
        StringBuilder apiUrl = new StringBuilder();

        try {
            Workbook book = Workbook.getWorkbook(new File(excelFilePath));
            // 獲得第一個(gè)工作表對象
            Sheet sheet = book.getSheet(0);
            // 得到第一列第一行的單元格
            int columnum = sheet.getColumns();// 得到列數(shù)
            int rownum = sheet.getRows();// 得到行數(shù)
//            System.out.println("總列數(shù):" + columnum);
//            System.out.println("總行數(shù):" + rownum);
            for(int i=1;i<rownum;i++)// 循環(huán)進(jìn)行讀寫
            {
                Cell cellBaseUrl = sheet.getCell(0,i);
                String baseUrl = cellBaseUrl.getContents();

                Cell cellCity = sheet.getCell(1,i);
                String city = cellCity.getContents();

                Cell cellLanguage = sheet.getCell(2,i);
                String language = cellLanguage.getContents();

                apiurl = baseUrl + city + "&language=" + language + "&unit=c" + "\n";
//                System.out.print(apiurl);

                // 直接String apiurl, print(apiurl)是可以全部循環(huán)值;
                // 但是后面的return時(shí)手幢,如果break,則返回第一個(gè)值;若continue忱详,則返回循環(huán)的最后一個(gè)值
                // 必須使用數(shù)組的形式围来,后面的return才可以返回所有的值
                apiUrl.append(apiurl);

//                break;
//                continue;

//                獲取sheet中所有內(nèi)容
//                for (int j = 0; j < columnum; j++) {
//                    Cell cellN = sheet.getCell(j, i);
//                    String result = cellN.getContents();
//                    System.out.print(result);
//                    System.out.print("\t");
//                }
//                System.out.println();
            }
            book.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }return apiUrl;
    }


    /**
     * 完全讀取 1張excel表 數(shù)據(jù)到 另一張excel表中
     * @param excelFilePath
     * @param excelFilePathNew
     */
    public void WriteExcel1ToExcel2(String excelFilePath,String excelFilePathNew){
        try {
            Workbook book = Workbook.getWorkbook(new File(excelFilePath));
            Sheet sheet = book.getSheet(0);

            WritableWorkbook book2 = Workbook.createWorkbook(new File(excelFilePathNew));
            WritableSheet sheet2 = book2.createSheet("第一頁", 0);

            int columnum = sheet.getColumns();
            int rownum = sheet.getRows();
            for (int i = 0; i < rownum; i++)
            {
                for (int j = 0; j < columnum; j++)
                {
                    Cell cellN = sheet.getCell(j, i);
                    String result ;
                    result = cellN.getContents();
                    System.out.print(result);
                    System.out.print("\t");
                    Label label = new Label(j, i, result);
                    sheet2.addCell(label);
                }
                System.out.println();
            }
            book2.write();
            book2.close();
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    /**
     * 完全讀取 excel表sheet1 數(shù)據(jù)到 該excel表sheet2 中
     * @param excelFilePath
     */
    public void WriteSheet1ToSheet2(String excelFilePath){
        try {
            Workbook wb = Workbook.getWorkbook(new File(excelFilePath));
            Sheet sheet1 = wb.getSheet(1);
            WritableWorkbook book = Workbook.createWorkbook(new File(excelFilePath),
                    wb);
            if (book.getSheet("3.實(shí)際結(jié)果") != null || book.getSheet("4.比對結(jié)果") != null) {
                book.removeSheet(2);
                book.removeSheet(3);
                }
            WritableSheet sheet2 = book.createSheet("3.實(shí)際結(jié)果", 2);
            WritableSheet sheet3 = book.createSheet("4.比對結(jié)果", 3);
            int columNum = sheet1.getColumns();
            for (int j=0;j<columNum;j++){
                Cell cell1 = sheet1.getCell(j,0);
                String result1 = cell1.getContents();
                Label label = new Label(j,0,result1);
                sheet2.addCell(label);
            }

            for (int y=0;y<columNum;y++){
                Cell cell1 = sheet1.getCell(y,0);
                String result1 = cell1.getContents();
                Label label = new Label(y,0,result1);
                sheet3.addCell(label);
            }

            // 整表sheet數(shù)據(jù)復(fù)制
//            int columNum = sheet0.getColumns();
//            int rownum = sheet0.getRows();
//            for (int i = 0; i < rownum; i++){
//                for (int j = 0; j < columNum; j++) {
//                    Cell cellN = sheet0.getCell(j, i);
//                    String result = cellN.getContents();
//                    System.out.print(result);
//                    System.out.print("\t");
//                    Label label = new Label(j, i, result);
//                    sheet.addCell(label);
//                }
//                System.out.println();
//            }
            book.write();
            book.close();
        }catch (Exception e){
            e.printStackTrace();
        }

    }


    public static void main(String[] args) {
        String excelFilePath = "src/main/java/data/testXinZhi.xls";
//        String excelFilePathNew = "src/main/java/data/test.xls";

        JxlExcelUtil excel = new JxlExcelUtil();
//        excel.CreateExcel();
//        excel.ReadExcel();
//        excel.UpdateExcel();
//        excel.WhileReadExcel(excelFilePath);
//        excel.WriteExcel1ToExcel2(excelFilePath,excelFilePathNew);
        excel.WriteSheet1ToSheet2(excelFilePath);
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市匈睁,隨后出現(xiàn)的幾起案子监透,更是在濱河造成了極大的恐慌,老刑警劉巖航唆,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胀蛮,死亡現(xiàn)場離奇詭異,居然都是意外死亡糯钙,警方通過查閱死者的電腦和手機(jī)粪狼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門退腥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人再榄,你說我怎么就攤上這事狡刘。” “怎么了困鸥?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵嗅蔬,是天一觀的道長。 經(jīng)常有香客問我窝革,道長购城,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任虐译,我火速辦了婚禮瘪板,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漆诽。我一直安慰自己侮攀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布厢拭。 她就那樣靜靜地躺著兰英,像睡著了一般。 火紅的嫁衣襯著肌膚如雪供鸠。 梳的紋絲不亂的頭發(fā)上畦贸,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音楞捂,去河邊找鬼薄坏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛寨闹,可吹牛的內(nèi)容都是我干的胶坠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼繁堡,長吁一口氣:“原來是場噩夢啊……” “哼沈善!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起椭蹄,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤闻牡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绳矩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罩润,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年埋酬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哨啃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡写妥,死狀恐怖拳球,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情珍特,我是刑警寧澤祝峻,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站扎筒,受9級特大地震影響莱找,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嗜桌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一奥溺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骨宠,春花似錦浮定、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匿又,卻和暖如春方灾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碌更。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工裕偿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人针贬。 一個(gè)月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓击费,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桦他。 傳聞我的和親對象是個(gè)殘疾皇子蔫巩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 本文介紹如何使用java操作excel,本文默認(rèn)使用spring boot做實(shí)驗(yàn),代碼內(nèi)需要加入依賴: 代碼...
    Nick_4438閱讀 1,775評論 0 0
  • java操作excel 導(dǎo)入POI.jar包快压,下載地址: http://poi.apache.org/downlo...
    wiyee閱讀 1,792評論 1 4
  • 這邊我就直接上java代碼了圆仔,然后和大家講解。首先是導(dǎo)jar包蔫劣,我用的是poi-3.3.9的包坪郭,大家可以上官網(wǎng)搜索...
    coolchun閱讀 828評論 0 4
  • 該文章為本系列的第一篇第二篇為 : Java POI操作Excel(Event Model)第三篇為 : Java...
    mmlmml閱讀 13,352評論 6 21
  • 脊柱微創(chuàng)范醫(yī)生的病房故事 1 20150917 (脊柱微創(chuàng)范醫(yī)生,重慶市第三軍醫(yī)大學(xué)大坪醫(yī)院脊柱外科主治醫(yī)師脉幢、講...
    8f798a164d65閱讀 487評論 1 3