成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript控制Excel打印完美解決方案

開發(fā) 后端 前端
做web開發(fā)大家都遇到過打印的問題,對(duì)于復(fù)雜的表格打印著實(shí)令人頭痛,這片文章介紹一下使用JavaScript控制excel打印的解決方法。

首先,如果客戶端調(diào)用excel必須降低ie安全級(jí)別,這樣一些非法的控件,如3721什么的都自動(dòng)安裝了,所以我這樣解決:保持原來的ie設(shè)置,把你的站點(diǎn)添加到信任站點(diǎn),然后更改安全站點(diǎn)的安全級(jí)別,這樣就給你的站點(diǎn)設(shè)置了一個(gè)安全通道,而且阻止了3721等的非法入侵,當(dāng)然前提是你要讓你的客戶下載一個(gè)注冊(cè)表并安裝,我是自己做,自己用,所以我得用戶是我說什么都跟著我做,你們就需要說服客戶了:)。
 
好,那么下一步就是如何實(shí)現(xiàn)打印了,這里我有非常奪得報(bào)表,而且一些非常復(fù)雜,如學(xué)生成績單,需要按照學(xué)年、學(xué)期計(jì)算學(xué)分績點(diǎn),打印照片,學(xué)位授予情況,學(xué)籍處理情況,四六級(jí)成績,實(shí)習(xí),輔修成績,實(shí)踐等,那么我如何把這些信息完整的打印到客戶端就是非常麻煩的了,所有我用excel,先做一個(gè)模版,然后調(diào)用模版填充數(shù)據(jù),問題又來了,這么多數(shù)據(jù)怎么組織呢,摸索好長時(shí)間,突然有個(gè)想法,把數(shù)據(jù)的提取單獨(dú)寫一個(gè)對(duì)象,這樣我的程序就簡潔多了,而且最好的是我任何地方都可以一樣使用它。還說成績單,數(shù)據(jù)非常大,多的要150條數(shù)據(jù),所以我的數(shù)據(jù)源選擇了表格,這樣不必費(fèi)力的生成什么xml了,顯示的就是我要的數(shù)據(jù)。ok介紹一下Gettabledata.js:它就是我要的數(shù)據(jù)對(duì)象了,主要功能是從table中提取數(shù)據(jù)(GetTableData),并提供一個(gè)輸出數(shù)據(jù)的方法(getfielddata),這個(gè)基本功能可以滿足我多數(shù)的需求。這個(gè)我自己寫的一個(gè)簡介,怕以后我忘了的:),大家看看有什么不清楚的我補(bǔ)充一下。

//Obj參數(shù)指定數(shù)據(jù)的來源(限定Table),默認(rèn)第一行為字段名稱行
//MoveNext方法,參數(shù)是表的行向上或向下移動(dòng)的位數(shù),正數(shù)向下移動(dòng),負(fù)數(shù)向上.如.MoveNext(1),.MoveNext(-1)
//GetFieldData方法獲得當(dāng)前行的指定的列名的數(shù),據(jù)如:.GetFieldData("考試成績"):列名.GetFieldData(1):索引
//Sort_desc方法對(duì)指定的列按降序排列,如.Sort_desc("學(xué)年","學(xué)期")
//Sort_asc方法對(duì)指定的列按升序排列,如.Sort_asc("考試成績:number"):":"后面的參數(shù)制定改列數(shù)據(jù)類型,此例為數(shù)字
//GetData方法返回字段值為特定值的數(shù)據(jù)數(shù)組,如果沒有字段值則返回所有該字段記錄.可以在外部進(jìn)行其他處理,不建議直接處理數(shù)據(jù):如.GetData()
//Delete方法刪除當(dāng)前記錄,數(shù)組減少一行,如:.Delete
//updateField更新當(dāng)前行的指定的索引數(shù)據(jù)(索引如果是數(shù)字,則是列的索引,為字符,是數(shù)據(jù)字段的名稱)如:MyData.UpdateField("課程號(hào)",MyData.GetFieldData("原課程號(hào)"))
//MoveFirst記錄移動(dòng)到數(shù)據(jù)的第一條記錄,注意數(shù)據(jù)從第二行開始,默認(rèn)第一行為字段名稱行
//MoveLast記錄移動(dòng)到數(shù)據(jù)的最后一條記錄
//Distinct返回所選記錄的不同記錄的條件個(gè)數(shù)維數(shù)數(shù)組,同時(shí)升序排序
//初始化,Obj:table的名字,Leftlen:左面多余數(shù)據(jù)長度,Rightlen:右面多余數(shù)據(jù)長度,
//rows屬性:數(shù)組行數(shù),cols:列數(shù)

在示例代碼中Print_bzcjd.js他是打印復(fù)雜excel的腳本,

  1. var xlBook = xls.Workbooks.Open("c:\\xsxycjb.xls");  
  2. var xlsheet = xlBook.Worksheets(1) 

這個(gè)可是使用網(wǎng)絡(luò)模板,

  1. var xlBook = xls.Workbooks.Open("http://you.com/\PrintTemplates\\xsxycjb.xls");  
  2. var xlsheet = xlBook.Worksheets(1) 

這個(gè)力例子中基本把excel打印需要的技術(shù)都展示出來了,如圖片,退出什么的。

這里要說明的是table的數(shù)據(jù)可以是隱藏的,不顯示也可以取出,這樣就可以增加很多數(shù)據(jù)進(jìn)來,又不影響界面。

Excel.js:這個(gè)是清理excel的腳本,當(dāng)結(jié)束excel進(jìn)程的時(shí)候它還沒有推出,清理一下,這個(gè)就沒有vs好了:(。

這個(gè)是一個(gè)簡單的示例,就是你給他一個(gè)表格名字就可以了,然后生成一個(gè)表格,就是這樣:MakeExcel("TABLE1",true,"1.xls"),其他參數(shù)可以不要。

  1. function MakeExcel(Obj,ProceVisible,SaveAsFilename,SortType,SortField){  
  2. var MyData= new GetTableData(Obj,0,0);  
  3. var myrows=MyData.rows;  
  4. var i,j;  
  5.  
  6.     try {  
  7.       var xls    = new ActiveXObject ( "Excel.Application" );  
  8.      }  
  9.     catch(e) {  
  10.          alert( "要打印該表,您必須安裝Excel電子表格軟件,同時(shí)瀏覽器須使用“ActiveX 控件”,您的瀏覽器須允許執(zhí)行控件。 請(qǐng)點(diǎn)擊【幫助】了解瀏覽器設(shè)置方法!");  
  11.               return "";  
  12.      }  
  13.       if (typeof(ProceVisible)=="undefined"){  
  14.      xls.visible = true;  
  15.      }  
  16.       else{  
  17.          if (ProceVisible=="true"){  
  18.            xls.visible = true;  
  19.            }  
  20.            else 
  21.             {  
  22.             xls.visible = false;  
  23.          }  
  24.        }  
  25.     var xlBook = xls.Workbooks.Add;  
  26.     var xlsheet = xlBook.Worksheets(1);  
  27.     xls.Cells.Select;  
  28.     xls.Selection.NumberFormatLocal = "@";  
  29.     for (i=0;i     for (j=0;j       if (typeof(MyData.GetFieldData(j)) == "number"){  
  30.        xlsheet.Cells(i+1,j+1).NumberFormatLocal = "0.00_ ";  
  31.        }  
  32.        xlsheet.Cells(i+1,j+1).Value= MyData.GetFieldData(j);  
  33.      }  
  34.        
  35.      MyData.MoveNext();   
  36.     }  
  37.       
  38.      if (SaveAsFilename=="" || typeof(SaveAsFilename)=="undefined"){  
  39.       var fname = xls.Application.GetSaveAsFilename("*.xls""Excel Spreadsheets (*.xls), *.xls");  
  40.       if (fname!=""){  
  41.       xlBook.SaveAs(fname);  
  42.       }  
  43.      }  
  44.      else{  
  45.      xlBook.SaveAs(SaveAsFilename);  
  46.      }  
  47.     xlBook.Close (savechanges=false);  
  48.     //xls.visible = false;  
  49.     xls.Quit();  
  50.     xls=null;  
  51.     //結(jié)束excel進(jìn)程,退出完成  
  52.     window.setInterval("Cleanup();",1);  
  53.       
  54. }  

【編輯推薦】

  1. JavaScript的document和window對(duì)象詳解
  2. 淺談JavaScript中面向?qū)ο蠹夹g(shù)的模擬
  3. 關(guān)于IE的內(nèi)存泄漏與JavaScript內(nèi)存釋放
  4. 如何優(yōu)化JavaScript腳本的性能
  5. Javascript中最常用的25個(gè)經(jīng)典技巧
責(zé)任編輯:王觀 來源: 動(dòng)態(tài)網(wǎng)站制作指南
相關(guān)推薦

2010-12-21 17:38:12

2021-02-23 10:34:51

Java 編程開發(fā)

2010-12-24 12:49:39

2009-10-27 15:49:43

2014-03-25 10:57:42

Android消息推送方案

2011-05-04 17:25:24

打印機(jī)

2009-10-27 15:35:08

2011-05-06 11:13:28

打印機(jī)

2011-07-08 09:44:13

虛擬化網(wǎng)絡(luò)解決方案

2009-12-29 09:01:49

2011-05-19 11:25:11

惠普打印機(jī)

2014-11-26 09:56:42

企業(yè)郵箱移動(dòng)辦公解決方案

2011-10-25 11:40:54

打印機(jī)常見問題

2011-04-28 16:30:55

打印機(jī)打印問題

2013-12-10 18:16:31

2009-02-19 10:13:00

2016-05-27 16:03:43

2011-10-27 16:01:54

工作站解決方案

2017-02-15 09:40:38

JavaScript分析解決

2021-06-28 08:10:59

JavaScript異步編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩国产欧美 | 色视频成人在线观看免 | 视频二区 | 日韩黄 | 成人国产精品久久 | 久久精品色视频 | 丝袜毛片| 中文字幕不卡在线88 | 精久久久久 | 欧美日韩在线观看一区 | 91视视频在线观看入口直接观看 | 不卡av在线 | 7777奇米影视 | 国产99精品| 国产精品视频在线观看 | 奇米超碰| 色姑娘综合网 | 日韩中文字幕 | 日韩av手机在线观看 | 一区二区三区免费 | 亚洲九九| 久久久久久国产精品免费免费男同 | 欧美黄页 | 欧美精品日韩 | 国产成人精品一区二区三区四区 | 波多野结衣一区二区三区在线观看 | 欧美视频中文字幕 | 欧美不卡视频一区发布 | caoporn免费| 九九久久国产精品 | 日韩一 | 成人在线视频免费看 | 午夜一区二区三区在线观看 | 99视频| 黄在线免费观看 | 91九色在线观看 | 成人精品啪啪欧美成 | 亚洲男人网 | 91免费在线看 | 97视频人人澡人人爽 | 国产成人精品久久二区二区91 |