Kendoui之grid保存為Excel

在制作報(bào)表時(shí)常會(huì)遇到的需求是報(bào)表的導(dǎo)出。將報(bào)表導(dǎo)出為一個(gè)Excel格式更便于瀏覽、維護(hù)及打印。同時(shí)Grid也提供了此功能

 var grid = $("#grid").data("kendoGrid");
    grid.saveAsExcel();

只需要這樣兩行簡(jiǎn)單的代碼就能將grid中的數(shù)據(jù)導(dǎo)出
** 但是... **
有時(shí)候?qū)С龅臄?shù)據(jù)和我們想象的不太一樣!!埠褪!

  • 導(dǎo)出失敗浓利,點(diǎn)擊觸發(fā)導(dǎo)出操作的按鈕時(shí)無(wú)反應(yīng),此時(shí)打開(kāi)瀏覽器控制臺(tái)發(fā)現(xiàn)報(bào)錯(cuò):

可以看出grid導(dǎo)出使用了jsZip庫(kù)钞速,我們需要將這個(gè)庫(kù)導(dǎo)入;
提供一個(gè)在線可用的js庫(kù):

<script src="http://cdnjs.cloudflare.com/ajax/libs/jszip/2.4.0/jszip.js"></script>
  • 導(dǎo)出的表格名稱默認(rèn)為grid.xlsx贷掖,每次都需要修改好麻煩,我們需要的是當(dāng)前打開(kāi)的表格的名稱xxx.xlsx
    此時(shí)只需要我們給grid添加一個(gè)屬性即可:
    方法1:
excelExport: function(e) {
        e.workbook.fileName = "xxx.xlsx";
 }

方法2:

excel: {
        fileName: "xxx.xlsx"
},
  • 導(dǎo)出成功渴语,看一下導(dǎo)出的Excel,艾瑪!,表中的數(shù)據(jù)怎么和我想象的不太一樣苹威,有的grid中的列,我在對(duì)應(yīng)的列中配置了template函數(shù)驾凶,修改了頁(yè)面上顯示的數(shù)據(jù)牙甫,即grid._data中的數(shù)據(jù)和顯示在頁(yè)面上的數(shù)據(jù)不一致,此時(shí)在Excel中表現(xiàn)的是grid._data中的值调违,而我的需求是要打印出頁(yè)面上顯示的數(shù)據(jù)(這符合大部分需求窟哺,因?yàn)楸4嬖跀?shù)據(jù)庫(kù)中的值,出于對(duì)可維護(hù)性技肩,降低數(shù)據(jù)庫(kù)冗余等問(wèn)題考慮且轨,往往和需要顯示的值是不同的),那么此時(shí)我們就要對(duì)grid._data進(jìn)行處理了虚婿,通過(guò)一系列邏輯判斷來(lái)改變修改里面的值旋奢,從而得到打印的效果
    方法1:
//在每次調(diào)用saveAsGrid前會(huì)先執(zhí)行這里面的函數(shù)
excelExport: function(e) {
    console.log(e.data);//打印e.data發(fā)現(xiàn)這里面的數(shù)據(jù)就是最后在Excel中輸出的值
    /*
     *  處理e.data即可
     *  將對(duì)數(shù)據(jù)的處理邏輯放在這里!H蝗V晾省!>缃KぁV蟆!T列U嬷佟!3跖臁秸应!
     */
}

方法2:

//在調(diào)用saveAsExcel()前對(duì)grid._data進(jìn)行處理
 var grid = $("#grid").data("kendoGrid");
console.log(grid._data);//打印grid._data發(fā)現(xiàn)這里面的數(shù)據(jù)就是打印出來(lái)的數(shù)據(jù);
/*
 *因?yàn)間rid中顯示的數(shù)據(jù)也是grid._data,所以直接修改grid._data會(huì)導(dǎo)致顯示的數(shù)據(jù)也發(fā)生變化
 *所以需要先將grid復(fù)制一份
 */
var excel={};
$.extend(excel,grid);//此時(shí)excel就是grid的副本碑宴,擁有和grid一樣的屬性和函數(shù),對(duì)grid的操作可以轉(zhuǎn)移到excel上來(lái)進(jìn)行
$.each(excel._data,function (i,item) {//逐行處理數(shù)據(jù)
  //將對(duì)數(shù)據(jù)的處理邏輯放在這里H硖洹!Q幽;雠病!U昙洹;咛酢!T鋈取U浴!>稹公黑!
})
 excel.saveAsExcel();
  • 做完以后,發(fā)現(xiàn)有需求變了摄咆,要求導(dǎo)出grid中所有的數(shù)據(jù)到Excel中凡蚜,打開(kāi)自己導(dǎo)出的Excel發(fā)現(xiàn)現(xiàn)在導(dǎo)出的是grid做完分頁(yè)以后的數(shù)據(jù),此時(shí)需要對(duì)grid的屬性進(jìn)行修改
excel:{
    allPages:true//是否導(dǎo)出所有頁(yè)中的數(shù)據(jù)
},

導(dǎo)出所有數(shù)據(jù)需要處理列數(shù)據(jù)吭从,方法如下:

 transport: {
        read: function (options) {
              remoting.json({
                  url: url,
                  type: 'get'
              }, function (error, result) {
                  if (!error) {
                      // 將對(duì)數(shù)據(jù)的處理邏輯放在這里7!S靶狻G畚瘛!Q纪ⅰT姹А!A敬病<丫А!K显亍轿秧!
                      options.success(result);
                  } else {
                      options.error(error);
                  }
             });
        }
}

kendo官方文檔并沒(méi)有直接給出關(guān)于導(dǎo)出Excel功能對(duì)瀏覽器的支持情況中跌,但是為了保險(xiǎn)起見(jiàn),請(qǐng)盡量使用IE10+以及Firefox4+以及其他現(xiàn)代瀏覽器

轉(zhuǎn)載鏈接:http://www.reibang.com/p/fbcaa51d9c0c
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有菇篡。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)漩符,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驱还,一起剝皮案震驚了整個(gè)濱河市嗜暴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌议蟆,老刑警劉巖闷沥,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咐容,居然都是意外死亡舆逃,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)戳粒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)路狮,“玉大人,你說(shuō)我怎么就攤上這事享郊。” “怎么了孝鹊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵炊琉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我又活,道長(zhǎng)苔咪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任柳骄,我火速辦了婚禮团赏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耐薯。我一直安慰自己舔清,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布曲初。 她就那樣靜靜地躺著体谒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臼婆。 梳的紋絲不亂的頭發(fā)上抒痒,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音颁褂,去河邊找鬼故响。 笑死傀广,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彩届。 我是一名探鬼主播伪冰,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惨缆!你這毒婦竟也來(lái)了糜值?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坯墨,失蹤者是張志新(化名)和其女友劉穎寂汇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捣染,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骄瓣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耍攘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榕栏。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蕾各,靈堂內(nèi)的尸體忽然破棺而出扒磁,到底是詐尸還是另有隱情,我是刑警寧澤式曲,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布妨托,位于F島的核電站,受9級(jí)特大地震影響吝羞,放射性物質(zhì)發(fā)生泄漏兰伤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一钧排、第九天 我趴在偏房一處隱蔽的房頂上張望敦腔。 院中可真熱鬧,春花似錦恨溜、人聲如沸符衔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柏腻。三九已至,卻和暖如春系吭,著一層夾襖步出監(jiān)牢的瞬間五嫂,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沃缘,地道東北人躯枢。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像槐臀,于是被迫代替她去往敵國(guó)和親锄蹂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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