通过网页将数据导出到Excel是常见需求,使用服务器端导出,开发周期长,部署麻烦。这里推荐一种客户端导出方法。

客户端导出与Sharepoint无关。这里附带使用场景基于SP,因为SP自带的导出功能比较弱,只能将List中全部数据导出的Excel中,如果要定制列和行很麻烦。使用客户端导出更简洁。

客户端导出特点:

  1. 灵活部署,无需重启服务器
  2. 配合sharepoint可以使用webservice获取全部数据
  3. 运行压力在客户端,服务器资源使用极少

使用方法:

  1. 需要客户端安装excel。
  2. 使用js开发
  3. 默认IE浏览器,或各种国产浏览器,谷歌从来都不兼容微软产品
//通过webservice获取List数据的JS。使用ActiveXObject("Microsoft.XMLDOM")解析xmlhttp.responseText中的xml即可获取全部list数据。获取数据预先写入一个Json后续使用更方便。
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中获取的数据写入一个HTML Table或者Json中。这里因为需要页面展示,正好放到一个HTML table中table对象名是objTable
function ExportToExcel(objTable)
{ var oXL = null;try{  oXL = new ActiveXObject("Excel.Application");  }catch(e){  alert("无法启动Excel!\n\n如您在使用IE浏览器,并确信您的电脑中已经安装了Excel,那么调整IE的安全级别。\n\n具体操作:\n\n工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");      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;
}

导出的Excel一般都是需要调整样式,字体,字号等满足客户需求,附注一下各个常用属性。 和常用色卡。

//设置Excel中ActiveWindow的属性:
ExcelSheet.ActiveWindow.freezePanes=true; //冻结行列
ExcelSheet.ActiveWindow.DisplayGridlines=false;//不显示网格
ExcelSheet.ActiveWindow.SplitRow = 2; //分割前两行
ExcelSheet.ActiveWindow.SplitColumn = 3; //分割前三列
//附带设置Excel中ActiveSheet的全部属性:
ExcelSheet.ActiveSheet.PageSetup.LeftMargin= 2/0.035; //页边距 左2厘米
ExcelSheet.ActiveSheet.PageSetup.RightMargin = 3/0.035; //页边距 右3厘米,
ExcelSheet.ActiveSheet.PageSetup.TopMargin = 4/0.035; //页边距 上4厘米,
ExcelSheet.ActiveSheet.PageSetup.BottomMargin = 5/0.035; //页边距 下5厘米
ExcelSheet.ActiveSheet.PageSetup.HeaderMargin = 1/0.035; //页边距 页眉1厘米
ExcelSheet.ActiveSheet.PageSetup.FooterMargin = 2/0.035; //页边距 页脚2厘米
ExcelSheet.ActiveSheet.PageSetup.CenterHeader = "页眉中部内容";
ExcelSheet.ActiveSheet.PageSetup.LeftHeader = "页眉左部内容";
ExcelSheet.ActiveSheet.PageSetup.RightHeader = "页眉右部内容";
ExcelSheet.ActiveSheet.PageSetup.CenterFooter = "页脚中部内容";
ExcelSheet.ActiveSheet.PageSetup.LeftFooter = "页脚左部内容";
ExcelSheet.ActiveSheet.PageSetup.RightFooter = "页脚右部内容";8.对单元格操作,带*部分对于行,列,区域都有相应属性
ExcelSheet.ActiveSheet.Cells(row,col).Value = "内容"; //设置单元格内容
ExcelSheet.ActiveSheet.Cells(row,col).Borders.Weight = 1; //设置单元格边框*()
ExcelSheet.ActiveSheet.Cells(row,col).Interior.ColorIndex = 1; //设置单元格底色*(1-黑色,
2-白色,3-红色,4-绿色,5-蓝色,6-黄色,7-粉红色,8-天蓝色,9-酱土色..可以多做尝试)
ExcelSheet.ActiveSheet.Cells(row,col).Interior.Pattern = 1; //设置单元格背景样式*(1-无,
2-细网格,3-粗网格,4-斑点,5-横线,6-竖线..可以多做尝试)
ExcelSheet.ActiveSheet.Cells(row,col).Font.ColorIndex = 1; //设置字体颜色*(与上相同)
ExcelSheet.ActiveSheet.Cells(row,col).Font.Size = 10; //设置为10号字*
ExcelSheet.ActiveSheet.Cells(row,col).Font.Name = "黑体"; //设置为黑体*
ExcelSheet.ActiveSheet.Cells(row,col).Font.Italic = true; //设置为斜体*
ExcelSheet.ActiveSheet.Cells(row,col).Font.Bold = true; //设置为粗体*
ExcelSheet.ActiveSheet.Cells(row,col).ClearContents; //清除内容*
ExcelSheet.ActiveSheet.Cells(row,col).WrapText=true; //设置为自动换行*
ExcelSheet.ActiveSheet.Cells(row,col).HorizontalAlignment = 3; //水平对齐方式枚举* (1-常规,
2-靠左,3-居中,4-靠右,5-填充 6-两端对齐,7-跨列居中,8-分散对齐)
ExcelSheet.ActiveSheet.Cells(row,col).VerticalAlignment = 2; //垂直对齐方式枚举*(1-靠上,
2-居中,3-靠下,4-两端对齐,5-分散对齐)
//行,列有相应操作:
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列
//区域有相应操作:
XLObj.Range(startcell+":"+endcell).Select;
//如Range("A2:H8")即A列第2格至H列第8格的整个区域
XLObj.Selection.
//合并单元格
XLObj.Range(startcell+":"+endcell).MergeCells = true;
//如Range("A2:H8")即将A列第2格至H列第8格的整个区域合并为一个单元格
或者:
XLObj.Range("A2",XLObj.Cells(8, 8)).MergeCells = true;9.设置行高与列宽
ExcelSheet.ActiveSheet.Columns("A:Z").ColumnWidth = 20;//设置Column的宽度为20
ExcelSheet.ActiveSheet.Rows("1:10").RowHeight = 50;//设置row行的宽度为50

ColorIndex对应的色值

如需要使用RGB颜色,要将RGB转换为十进制,通过如下属性赋值

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

使用两层的For循环对单元格调整颜色或字体效率很低,可以考虑是用excel 的range批量操作。参考我下一篇:通过JS导出Excel。将JS数组转换为VB数组_佛曰我不想说话的博客-CSDN博客在JS中可以使用excel对象range赋值,但不能直接使用js的array,需要预先将js的数组转换成二进制的dictionary才可以。通过如下函数可以转换将JS的数组转换成VB数组:function toVBArray1(jarray) { var dict1 = new ActiveXObject('Scripting.Dictionary'); for (var...https://blog.csdn.net/GetDC/article/details/99425352

通过javascript获取sharepoint数据,使用JS导出Excel相关推荐

  1. javascript 获取滚动条高度+常用js页面宽度与高度

    javascript 获取滚动条高度+常用js页面宽度与高度/ ********************* 取窗口滚动条高度****************** / function getScrol ...

  2. js导出EXCEL js导出EXCEL

    参考一:http://wenku.baidu.com/view/7b81f3eb6294dd88d0d26b57.html 参考二: js导出EXCEL js导出EXCEL <html> ...

  3. js导出excel(带边框以及文本样式)

    js导出excel 假定有这样一个页面 <div class="content-table"><table lay-filter="queryTable ...

  4. 浏览器端JS导出EXCEL

    浏览器端JS导出EXCEL FileSaver.js 实现了在本身不支持 HTML5 W3C saveAs() FileSaver 接口的浏览器支持文件保存.FileSaver.js 在客户端保存文件 ...

  5. chrome浏览器使用js导出Excel出现网络错误

    使用js 导出Excel由于数据量太大导致出现网络错误,如图所示: 解决办法: 表格绘制完成后,使用 Blob let blob = new Blob([format(template, ctx]); ...

  6. 关于IE8浏览器JS导出excel,要使导出列宽度按自己控制。

    关于IE8浏览器JS导出excel,要使导出列宽度按自己控制. function getExplorer() { var explorer = window.navigator.userAgent ; ...

  7. js导出excel(js-export-excel)

    js导出excel表格 这个需求在后台管理系统中很常见, 我们使用js-export-excel进行excel的导出 首先在我们的项目中安装这个包 npm install js-export-exce ...

  8. 案例分享:医疗流式细胞术数据文件(.fcs)导出excel表工具

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109473140 各位读者,知识无穷而人力有穷 ...

  9. 四种利用js导出Excel的方法(兼容IE6+、主流浏览器、支持复杂表头和合并单元格)

    因为项目需求变更,最后决定使用做JS导出Excel,网上看了很多的帖子和例子,很多的例子并不能满足需求( 处理复杂表头,兼容主流浏览器,兼容IE等等).所以,自己找了几个比较不错的例子,在其基础上结合 ...

最新文章

  1. java继承关键字super_java学习笔记-继承中super关键字
  2. linux系统下如何禁止ping命令或允许ping命令的方法
  3. 每天一个Linux命令之date
  4. C# LINQ to XML
  5. [BZOJ 3531] [Sdoi2014] 旅行 【离线+LCT】
  6. 【Express】—get根据不同的参数返回不同的数据
  7. 学习Cocos2d的博客 --推荐
  8. python 图片文字转换成word_如何把图片文字转换成word文字?
  9. 使用SQL管理数据库
  10. 计算机常用工具软件实训总结报告,计算机常用工具软件实训报告精编版.doc
  11. python循环结构语句实现_Python的循环结构
  12. Android 获得 usb 权限的两种方式
  13. 计算机应用发sci,计算机算法方面能选择哪些sci期刊
  14. TypeScript项目的问题-第三方包报类型兼容错误
  15. TCP SYN-Flood攻击
  16. oracle 19c创建sample schema-HR,OE,SH等等
  17. RabbitMQ之mandatory和immediate介绍
  18. rg1 蓝光危害rg0_防蓝光危险评估结果是RG0的台灯
  19. 易语言软件更换皮肤的方法
  20. 前端工程师:交互设计师应具备的基本知识架构

热门文章

  1. SAP中如何对预制凭证,增加开户行和账户标识
  2. RS485_Modbus通讯笔记
  3. 常用的DOS命令大全
  4. linux jpg图片转base64,html中的图片直接使用base64编码后的字符串代替
  5. 深度分析:多元化布局或成香飘飘营销转型的重要一环
  6. 四十多岁的男人还适合重新创业吗?
  7. 信息安全—密码学信息熵信息理论基础—熵的概念(熵、联合熵、条件熵、平均互信息)
  8. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之策略模式
  9. word 编辑过程中变为只读_WPS?教程 | WPS?云办公如何多人协同编辑
  10. C中kbhit()和getch()以及gets()和getchar()的用法