日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

通过javascript获取sharepoint数据,使用JS导出Excel

發(fā)布時(shí)間:2024/3/13 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过javascript获取sharepoint数据,使用JS导出Excel 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通過(guò)網(wǎng)頁(yè)將數(shù)據(jù)導(dǎo)出到Excel是常見(jiàn)需求,使用服務(wù)器端導(dǎo)出,開(kāi)發(fā)周期長(zhǎng),部署麻煩。這里推薦一種客戶端導(dǎo)出方法。

客戶端導(dǎo)出與Sharepoint無(wú)關(guān)。這里附帶使用場(chǎng)景基于SP,因?yàn)镾P自帶的導(dǎo)出功能比較弱,只能將List中全部數(shù)據(jù)導(dǎo)出的Excel中,如果要定制列和行很麻煩。使用客戶端導(dǎo)出更簡(jiǎn)潔。

客戶端導(dǎo)出特點(diǎn):

  • 靈活部署,無(wú)需重啟服務(wù)器
  • 配合sharepoint可以使用webservice獲取全部數(shù)據(jù)
  • 運(yùn)行壓力在客戶端,服務(wù)器資源使用極少
  • 使用方法:

  • 需要客戶端安裝excel。
  • 使用js開(kāi)發(fā)
  • 默認(rèn)IE瀏覽器,或各種國(guó)產(chǎn)瀏覽器,谷歌從來(lái)都不兼容微軟產(chǎn)品
  • //通過(guò)webservice獲取List數(shù)據(jù)的JS。使用ActiveXObject("Microsoft.XMLDOM")解析xmlhttp.responseText中的xml即可獲取全部list數(shù)據(jù)。獲取數(shù)據(jù)預(yù)先寫入一個(gè)Json后續(xù)使用更方便。 function GetListItems() {var soapMessage = GetSoapMessageLists("Listname");var Url = UrlFormat("http://localhost/sitename");xmlhttp = createXMLHttpRequest();xmlhttp.onreadystatechange = function(){GetListItems_Complete();};xmlhttp.open("POST", Url, false);xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/GetListItems");xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");xmlhttp.send(soapMessage); } function GetListItems_Complete() {if (xmlhttp.readyState == 4) {if (xmlhttp.status == 200) {alert(xmlhttp.responseText);}} }

    //把Webservice中獲取的數(shù)據(jù)寫入一個(gè)HTML Table或者Json中。這里因?yàn)樾枰?yè)面展示,正好放到一個(gè)HTML table中table對(duì)象名是objTable function ExportToExcel(objTable) { var oXL = null;try{ oXL = new ActiveXObject("Excel.Application"); }catch(e){ alert("無(wú)法啟動(dòng)Excel!\n\n如您在使用IE瀏覽器,并確信您的電腦中已經(jīng)安裝了Excel,那么調(diào)整IE的安全級(jí)別。\n\n具體操作:\n\n工具 → Internet選項(xiàng) → 安全 → 自定義級(jí)別 → 對(duì)沒(méi)有標(biāo)記為安全的ActiveX進(jìn)行初始化和腳本運(yùn)行 → 啟用"); return false; }// Get a new workbook. var oWB = oXL.Workbooks.Add(); var oSheet = oWB.ActiveSheet; var hang = objTable.rows.length; var lie = objTable.rows(0).cells.length; // Add table headers going cell by cell. for (var i=0;i<hang;i++) { for (var j=0;j<lie;j++) { oSheet.Cells(i+1,j+1).value = objTable.rows(i).cells(j).innerText; } } oXL.Visible = true; oXL.UserControl = true; }

    導(dǎo)出的Excel一般都是需要調(diào)整樣式,字體,字號(hào)等滿足客戶需求,附注一下各個(gè)常用屬性。?和常用色卡。

    //設(shè)置Excel中ActiveWindow的屬性: ExcelSheet.ActiveWindow.freezePanes=true; //凍結(jié)行列 ExcelSheet.ActiveWindow.DisplayGridlines=false;//不顯示網(wǎng)格 ExcelSheet.ActiveWindow.SplitRow = 2; //分割前兩行 ExcelSheet.ActiveWindow.SplitColumn = 3; //分割前三列 //附帶設(shè)置Excel中ActiveSheet的全部屬性: ExcelSheet.ActiveSheet.PageSetup.LeftMargin= 2/0.035; //頁(yè)邊距 左2厘米 ExcelSheet.ActiveSheet.PageSetup.RightMargin = 3/0.035; //頁(yè)邊距 右3厘米, ExcelSheet.ActiveSheet.PageSetup.TopMargin = 4/0.035; //頁(yè)邊距 上4厘米, ExcelSheet.ActiveSheet.PageSetup.BottomMargin = 5/0.035; //頁(yè)邊距 下5厘米 ExcelSheet.ActiveSheet.PageSetup.HeaderMargin = 1/0.035; //頁(yè)邊距 頁(yè)眉1厘米 ExcelSheet.ActiveSheet.PageSetup.FooterMargin = 2/0.035; //頁(yè)邊距 頁(yè)腳2厘米 ExcelSheet.ActiveSheet.PageSetup.CenterHeader = "頁(yè)眉中部?jī)?nèi)容"; ExcelSheet.ActiveSheet.PageSetup.LeftHeader = "頁(yè)眉左部?jī)?nèi)容"; ExcelSheet.ActiveSheet.PageSetup.RightHeader = "頁(yè)眉右部?jī)?nèi)容"; ExcelSheet.ActiveSheet.PageSetup.CenterFooter = "頁(yè)腳中部?jī)?nèi)容"; ExcelSheet.ActiveSheet.PageSetup.LeftFooter = "頁(yè)腳左部?jī)?nèi)容"; ExcelSheet.ActiveSheet.PageSetup.RightFooter = "頁(yè)腳右部?jī)?nèi)容";8.對(duì)單元格操作,帶*部分對(duì)于行,列,區(qū)域都有相應(yīng)屬性 ExcelSheet.ActiveSheet.Cells(row,col).Value = "內(nèi)容"; //設(shè)置單元格內(nèi)容 ExcelSheet.ActiveSheet.Cells(row,col).Borders.Weight = 1; //設(shè)置單元格邊框*() ExcelSheet.ActiveSheet.Cells(row,col).Interior.ColorIndex = 1; //設(shè)置單元格底色*(1-黑色, 2-白色,3-紅色,4-綠色,5-藍(lán)色,6-黃色,7-粉紅色,8-天藍(lán)色,9-醬土色..可以多做嘗試) ExcelSheet.ActiveSheet.Cells(row,col).Interior.Pattern = 1; //設(shè)置單元格背景樣式*(1-無(wú), 2-細(xì)網(wǎng)格,3-粗網(wǎng)格,4-斑點(diǎn),5-橫線,6-豎線..可以多做嘗試) ExcelSheet.ActiveSheet.Cells(row,col).Font.ColorIndex = 1; //設(shè)置字體顏色*(與上相同) ExcelSheet.ActiveSheet.Cells(row,col).Font.Size = 10; //設(shè)置為10號(hào)字* ExcelSheet.ActiveSheet.Cells(row,col).Font.Name = "黑體"; //設(shè)置為黑體* ExcelSheet.ActiveSheet.Cells(row,col).Font.Italic = true; //設(shè)置為斜體* ExcelSheet.ActiveSheet.Cells(row,col).Font.Bold = true; //設(shè)置為粗體* ExcelSheet.ActiveSheet.Cells(row,col).ClearContents; //清除內(nèi)容* ExcelSheet.ActiveSheet.Cells(row,col).WrapText=true; //設(shè)置為自動(dòng)換行* ExcelSheet.ActiveSheet.Cells(row,col).HorizontalAlignment = 3; //水平對(duì)齊方式枚舉* (1-常規(guī), 2-靠左,3-居中,4-靠右,5-填充 6-兩端對(duì)齊,7-跨列居中,8-分散對(duì)齊) ExcelSheet.ActiveSheet.Cells(row,col).VerticalAlignment = 2; //垂直對(duì)齊方式枚舉*(1-靠上, 2-居中,3-靠下,4-兩端對(duì)齊,5-分散對(duì)齊) //行,列有相應(yīng)操作: ExcelSheet.ActiveSheet.Rows(row). ExcelSheet.ActiveSheet.Columns(col). ExcelSheet.ActiveSheet.Rows(startrow+":"+endrow). //如Rows("1:5")即1到5行 ExcelSheet.ActiveSheet.Columns(startcol+":"+endcol). //如Columns("A:B")即1到2列 //區(qū)域有相應(yīng)操作: XLObj.Range(startcell+":"+endcell).Select; //如Range("A2:H8")即A列第2格至H列第8格的整個(gè)區(qū)域 XLObj.Selection. //合并單元格 XLObj.Range(startcell+":"+endcell).MergeCells = true; //如Range("A2:H8")即將A列第2格至H列第8格的整個(gè)區(qū)域合并為一個(gè)單元格 或者: XLObj.Range("A2",XLObj.Cells(8, 8)).MergeCells = true;9.設(shè)置行高與列寬 ExcelSheet.ActiveSheet.Columns("A:Z").ColumnWidth = 20;//設(shè)置Column的寬度為20 ExcelSheet.ActiveSheet.Rows("1:10").RowHeight = 50;//設(shè)置row行的寬度為50

    ColorIndex對(duì)應(yīng)的色值

    如需要使用RGB顏色,要將RGB轉(zhuǎn)換為十進(jìn)制,通過(guò)如下屬性賦值

    ExcelSheet.ActiveSheet.Cells(row,col).Interior.Color = 1652735;//大紅

    使用兩層的For循環(huán)對(duì)單元格調(diào)整顏色或字體效率很低,可以考慮是用excel 的range批量操作。參考我下一篇:通過(guò)JS導(dǎo)出Excel。將JS數(shù)組轉(zhuǎn)換為VB數(shù)組_佛曰我不想說(shuō)話的博客-CSDN博客在JS中可以使用excel對(duì)象range賦值,但不能直接使用js的array,需要預(yù)先將js的數(shù)組轉(zhuǎn)換成二進(jìn)制的dictionary才可以。通過(guò)如下函數(shù)可以轉(zhuǎn)換將JS的數(shù)組轉(zhuǎn)換成VB數(shù)組:function toVBArray1(jarray) { var dict1 = new ActiveXObject('Scripting.Dictionary'); for (var...https://blog.csdn.net/GetDC/article/details/99425352

    總結(jié)

    以上是生活随笔為你收集整理的通过javascript获取sharepoint数据,使用JS导出Excel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。