html页面表格导出到excel总结
- 格式:docx
- 大小:24.35 KB
- 文档页数:10
vue中使⽤js-xlsx导出excel⽂件(可以修改样式)前端vue中使⽤js-xlsx导出excel⽂件(可以修改样式)使⽤js-xlsx是因为有个需求是要把⽤户上传的xmind⽂件转excel⽂件导出,当时有点懵,在⽹上找了许多资料发现了前端有如下⼏种⽅法可导出excel⽂件(⽅法有许多但原理都是⼀样的)1.通过js的Blob与Object URL把html表格直接导出注意:只能导出为xls格式的excel⽂件,且实际导出的就是⼀个html⽂档。
但是因为导出的是html所以就可以在保留html表格原有的样式了。
2.使⽤ActiveXObject对象来创建excel⽂件写⼊数据导出注意:只能在ie下使⽤因为只有ie下有ActiveXObject对象3.使⽤jquery的tabletoexcle.js库来导出4.使⽤js-xlsx来导出excel⽂件修改样式需要使⽤xlsx-stylevue中使⽤xlsx的详细步骤安装xlsx插件(需要修改样式的话安装xlsx-style)$ npm install --save xlsx$ npm install --save xlsx-style在需要使⽤的vue⽂件中引⼊import XLSX from "xlsx"如果引⼊xlsx-style的话可能会报错:This relative module was not found:./cptable in ./node_modules/xlsx-style@0.8.13@xlsx-style/dist/cpexcel.js我也不知道是啥问题⼀引⼊就报错有点搞不懂(有⼤佬知道可以回复下(*^_^*))后⾯找到原因了…: 是因为在\node_modules\xlsx-style\dist\cpexcel.js 807⾏的 var cpt = require(’./cpt’ + ‘able’); 这⾥的require("./cptable") 其实没有这个⽂件我参照了xlsx的cpexcel.js这个⽂件的同⼀地⽅是 var cpt = cptable; 所以后⾯改成这个以后引⼊就没问题了具体咋回事也不清楚。
网页数据如何简单导出excel在浏览网页时,遇到我们需要的网页数据时,如文字、图片等,如何能简单的导出到Excel 中,方便在本地电脑中查看和编辑呢?当然是有办法的啦!下面就为大家介绍几种简单快速的将网页数据导出到Excel的方法,大家可以灵活运用。
一、通过浏览器导出网页数据具体操作:打开某网页后,右键点击网页空白处,在下拉列表中选择“另存为”,然后在弹出的保存窗口中选择保存类型为“网页全部”。
选择保存位置后确定,保存后就会自动保存两个文件,一个是网址,另一个是保存网页内容元素。
如何导出网页数据,以赶集网采集为例图1二、通过网页数据采集器导出网页数据先通过网页数据采集器,将网页数据采集下来,然后再导出为需要的格式即可。
本文使用的是操作简单、功能强大的八爪鱼采集器。
以下是一个八爪鱼采集并导出网页数据的完整示例。
示例中采集的是赶集网上房产-商铺-深圳-南山分类下的所有商铺信息。
示例网站:/fang6/nanshan/步骤1:创建采集任务1)进入主界面,选择“自定义模式”如何导出网页数据,以赶集网采集为例图22)将要采集的网址URL,复制粘贴到网址输入框中,点击“保存网址”如何导出网页数据,以赶集网采集为例图3步骤2:创建翻页循环1)在页面右上角,打开“流程”,以展现出“流程设计器”和“定制当前操作”两个板块。
将页面下拉到底部,点击“下一页”按钮,在右侧的操作提示框中,选择“循环点击下一页”如何导出网页数据,以赶集网采集为例图4步骤3:创建列表循环1)移动鼠标,选中页面里的第一个商铺链接。
选中后,系统会自动识别页面里的其他相似链接。
在右侧操作提示框中,选择“选中全部”如何导出网页数据,以赶集网采集为例图52)选择“循环点击每个链接”,以创建一个列表循环如何导出网页数据,以赶集网采集为例图6步骤4:提取商铺信息1)在创建列表循环后,系统会自动点击第一个商铺链接,进入商铺详细信息页。
点击需要的字段信息,在右侧的操作提示框中,选择“采集该元素的文本”如何导出网页数据,以赶集网采集为例图72)字段信息选择完成后,选中相应的字段,可以进行字段的自定义命名。
使⽤纯前端JavaScript实现Excel导⼊导出⽅法过程详解公司最近要为某国企做⼀个**统计和管理系统,具体要求包含Excel导⼊导出根据导⼊的数据进⾏展⽰报表图表展⽰(包括柱状图,折线图,饼图),⽽且还要求要有动画效果,扁平化风格Excel 导出,并要提供客户端来管理Excel ⽂件...要求真多!现在总算是完成了,于是将我的经验分析出来。
在整个项⽬架构中,⾸先就要解决Excel导⼊的问题。
由于公司没有⾃⼰的框架做Excel IO,就只有通过其他渠道了。
嗯,我在github上找到了⼀个开源库,通过npm⽅式来安装。
npm install xlsx --save之后,在⾃⼰的html⽂件⾥⾯添加对js⽂件的引⽤<script src="./node_modules/xlsx/dist/jszip.js"></script><script src="./node_modules/xlsx/dist/xlsx.js"></script>通过FileReader对象将数据以⼆进制字符串的⽅式加载到内存中,target.addEventListener('drop', function (e) {e.preventDefault();handleDrop(e.dataTransfer.files[0]);});handleDrop = function(){var reader = new FileReader();reader.onload = function (e) {var data = e.target.result;......};reader.readAsBinaryString(f);}然后我们下来的操作就是要利⽤库对data数据进⾏操作了。
它暴露了⼀个对象XLSX,通过XLSX的read()⽅法就可以将数据读为JSON对象了。
在Vue⾥如何把⽹页的数据导出到Excel的⽅法前⾔:在做后台管理的时候,我们往往有需要把⽹页上⾯的数据导出到excel这样的需求,真实的企业项⽬⾥对应⼀些导出财务报表、员⼯信息、交易记录、考勤打卡记录…等等需求,本⽂将对此做探讨。
开始前补充:⽹上是有些⽜⼈已经把这个功能封装成组件了,但每个⼈的封装逻辑五花⼋门,组件的功能也很有限,不⼀定真能完全符合⾃⼰的业务需求,找相应的API也很⿇烦,存在不太敢⽤,不会⽤等问题,那么本⽂将教你如何⾃⼰封装,如何⾃⼰⾃定义相关功能,如何⾃定义Excel的样式,尤其是导出excel后⾃定义样式,这在⼀些现存封装好的组件是不好实现的,本⽂可以实现!本⽂导出Excel⽅法的优点:⽹页上的table与导出Excel之后的table完全独⽴,也就是说你导出Excel之后的内容与⽹页没有直接联系,这意味着数据导出到Excel后有⾮常强的1定制性,实在不理解这句话也没关系,本⽂看完你⾃然就明⽩了。
2能跨浏览器兼容,甚⾄是某E浏览器。
3导出⾮常快,不卡顿!⼀、使⽤脚⼿架创建⼀个Vue项⽬,在⽣成的src⽬录下创建exportToExcel.js⽂件(名称⾃取), 并且到App.vue⾥⾯快速模拟⽣成⼀份表格数据1、我这⾥简单模拟⽹页上⼀份表格数据,使⽤的是iview的table组件,⽹页上展⽰的表格的组件你可以⽤你⾃⼰喜欢的组件,我这⾥做演⽰⽤,你完全可以不跟我⼀样;<style lang="less"></style><template><div><h2>这是⼀个使⽤iview的table组件,做展⽰⽤,你当然可以在⾃⼰的项⽬⾥⽤⾃⼰想要的任何table组件</h2><Table :columns="column" :data="tableData"></Table> //iview的Table组件<Button @click="toExcel">导出表格数据到Excel</Button> //导出excel的按钮</div></template><script>import transform from './exportToExcel.js' //这个⽅法来源于⼆步骤封装的⽅法,往下看export default {name:'App', //这是⼀个⽗组件,名称为App.vuedata(){return {tableData:[], //表格数据column:[] //表格的列}},methods:{toExcel(){//调⽤我们封装好的⽅法,传3个参数过去,分别为:数据,⽂件名,回到函数(可根据⾃⼰需求决定回调是否需要)transform(this.tableData, '我是⽂件名', this.callback)},callback(info){console.log(info)}},created(){//模拟⽹络请求this.tableData = [{index:1,name:'我是1号',age:18,sex:'男',hobby:'web',hair:'thick',salaried:'99999999'},{index:2,name:'我是2号',age:18,sex:'男',hobby:'web',hair:'thick',salaried:'99999999'},{index:3,name:'我是3号',age:18,sex:'男',hobby:'web',hair:'thick',salaried:'99999999'},{index:4,name:'我是4号',age:18,sex:'男',hobby:'web',hair:'thick',salaried:'99999999'},{index:5,name:'我是5号',age:18,sex:'男',hobby:'web',hair:'thick',salaried:'99999999'},{index:6,name:'我是6号',age:18,sex:'⼥',hobby:'web',hair:'thick',salaried:'99999999'},{index:7,name:'我是7号',age:18,sex:'⼥',hobby:'web',hair:'thick',salaried:'99999999'},{index:8,name:'我是8号',age:18,sex:'⼥',hobby:'web',hair:'thick',salaried:'99999999'},{index:9,name:'我是9号',age:18,sex:'⼥',hobby:'web',hair:'thick',salaried:'99999999'},{index:10,name:'我是10号',age:18,sex:'⼥',hobby:'web',hair:'thick',salaried:'99999999'},{index:11,name:'我是11号',age:18,sex:'男',hobby:'web',hair:'thick',salaried:'99999999'},{index:12,name:'我是12号',age:18,sex:'男',hobby:'web',hair:'thick',salaried:'99999999'},{index:13,name:'我是13号',age:18,sex:'⼥',hobby:'web',hair:'thick',salaried:'99999999'},{index:14,name:'我是14号',age:18,sex:'⼥',hobby:'web',hair:'thick',salaried:'99999999'},{index:15,name:'我是15号',age:18,sex:'男',hobby:'web',hair:'thick',salaried:'99999999'}]this.column = [{key:'index',title:'序号',width:120},{key:'name',title:'姓名',width:120},{key:'age',title:'年龄',width:120},{key:'sex',title:'性别',width:120},{key:'hobby',title:'爱好',width:120},{key:'hair',title:'发量',width:120},{key:'salaried',title:'薪⽔',width:120}]}}</script>⼆、进⼊exportToExcel.js⽂件,写导出业务逻辑代码,也就是上⾯对应的transform这个⽅法书写思路:采⽤HTML字符串拼接的⽅法,拼接出⼀个table,即可显⽰到Excel;换句话来说使⽤HTML的语法写出来的table能展⽰到excel上⾯,还能携带样式!请⽤⼼看完拼接过程,拼接看懂了,你会90%了!var idTmr;//⾃⼰定义⼀个函数transform,在⾥⾯写我们的业务逻辑function transform(table, name, callback) { //table为表格数据,name为导出⽂件名,//callback为导出完毕回调,⽅便你知道导出完成了(可根据⾃⼰需求决定是否需要)let tableInnerHTML = ''let headerData = ['序号','姓名','年龄','性别','爱好','发量','薪⽔']let bodyData = table //这⾥对应是表格数据,我们只需要传过来即可//拼接完全使⽤thead、tbody、tr、td、th,并且相应的tr、th、td⾥可以写⼀些类似colspan(决定占⼏列)//rowspan(决定占⼏⾏)的属性、可以⽤作合并⾏、合并列等⾼级操作tableInnerHTML += '<thead><tr>'; //头部部分开始拼接!tableInnerHTML += `<th colspan=${headerData.length}style='background:#CCFFFF;border:solid;'>` + "程序员的将来" + "</th></tr>"tableInnerHTML += '<tr>'headerData.forEach(item => {tableInnerHTML += "<th rowspan='1' style='background:#FFFFCC;border:solid'>"+ item + "</th>"})tableInnerHTML += '</tr></thead>'; //头部部分结束tableInnerHTML += '<tbody>' //⾝体部分开始bodyData.forEach(item => {tableInnerHTML += "<tr>"tableInnerHTML += "<td align='center' style='border:solid'>" + item.index + "</td>"tableInnerHTML += "<td align='center' style='border:solid'>" + + "</td>"tableInnerHTML += "<td align='center' style='border:solid'>" + item.age + "</td>"tableInnerHTML += "<td align='center' style='border:solid'>" + item.sex + "</td>"tableInnerHTML += "<td align='center' style='border:solid'>" + item.hobby + "</td>"tableInnerHTML += "<td align='center' style='border:solid'>" + item.hair + "</td>"tableInnerHTML += "<td align='center' style='border:solid'>" + item.salaried + "</td>"tableInnerHTML += "</tr>"})tableInnerHTML += '</tbody>'; //⾝体结束//------------OK,到此为⽌拼接⼯作做完,也就是基本的数据已经被拼接成表格了--------------------//tip开始(下⾯还有个tip结束的位置)/*-------从tip开始到tip结束的过程是判断浏览器类型步骤,做兼容性处理!对于你来说你完全可以不⽤深⼊理解这⾥⾯的逻辑,直接复制到⾃⼰的项⽬⾥去,不会存在任何浏览器兼容性的问题!*/function getExplorer() {var explorer = erAgent;if (explorer.indexOf('MSIE') >= 0) {return 'ie'; // ie} else if (explorer.indexOf('Firefox') >= 0) {return 'Firefox'; // firefox} else if (explorer.indexOf('Chrome') >= 0) {return 'Chrome'; // Chrome} else if (explorer.indexOf('Opera') >= 0) {return 'Opera'; // Opera} else if (explorer.indexOf('Safari') >= 0) {return 'Safari'; // Safari};};if (getExplorer() !== 'Safari' && name.substr(-1, 4) !== '.xls') {name += '.xls';}if (getExplorer() === 'ie') {var curTbl = table;var oXL = new ActiveXObject('Excel.Application');var oWB = oXL.Workbooks.Add();var xlsheet = oWB.Worksheets(1);var sel = document.body.createTextRange();sel.moveToElementText(curTbl);sel.select();sel.execCommand('Copy');xlsheet.Paste();oXL.Visible = true;try {var fname=oXL.Application.GetSaveAsFilename('Excel.xls', 'Excel Spreadsheets (*.xls), *.xls');} catch (e) {print('Nested catch caught ' + e);} finally {oWB.SaveAs(fname);// oWB.Close(savechanges = false);oXL.Quit();oXL = null;idTmr = setInterval(Cleanup(), 1);}} else {tableToExcel(tableInnerHTML, name, callback); /*在这调⽤下⾯的⼀个⽅法,传⼊拼接完成的表格,⽂件名,回调函数。
SOAOFFICE-微软OFFICE中间件SOAOffice 中间件是北京科翰软件为微软OFFICE量身打造的Web中间件,是Web调用Office、存取Office数据的必备中间件。
SOAOffice中间件由服务器端数据组件和客户端显示控件构成。
SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java 组件接口,不但能够在线(浏览器页面)打开、编辑、保存Office文档,而且开发人员还能够以简洁的代码快速的将数据库数据动态填充到Office文档指定位置,并且也能够从Office文档中提取指定位置的数据保存到数据库。
SOAOffice提供这些强大功能的同时,服务器端并不需要安装运行Office软件。
通过SOAOffice,在Web世界里,难以驯服的Word/Excel就变成了普通的、熟悉的、服务器端可调用的.Net组件、Java组件、ASP组件、PHP组件,开发人员再也不用研究复杂的Word/Excel COM自动化细节、学习复杂的VBA语法调用,也不用去应对Word/Excel死进程、系统稳定运行的问题。
开发人员能够节省宝贵的精力和时间,把它投放到更重要的业务逻辑和系统架构上,而控制Office的具体技术细节交给SOAOffice去做。
SOAOffice除了提供Word/Excel动态数据填充,Word/Excel数据导入导出,Word/Excel/PowerPoint等Office文档的在线打开、编辑、保存,权限控制,只读控制等功能外,还给在线办公内置了强大的支持功能:强制痕迹保留,手写批注,圈阅,手写签名,电子印章、数字签名、模板套红、一键套红等。
科翰软件是国内唯一的微软Office中间件开发商,拥有卓越的自主研发实力和独创的专利技术,其产品SOAOffice不仅畅销国内,而且还远销欧美国际市场,其中世界500强美国Dover集团、可口可乐Coca-Cola、中石油、中石化等都是SOAOffice产品的忠实客户。
使用asp怎样将数据导出到excel文件 Web注意:两个函数中的“data“是网页中要导出的table的 id<input type="hidden" name="out_word" onclick="vbscript:buildDoc" value="导出到word" class="notPrint"><input type="hidden" name="out_excel" onclick="AutomateExcel();" value="导出到excel" class="notPrint">导出到Excel代码<SCRIPT LANGUAGE="JavaScript"><!--function AutomateExcel(){// Start Excel and get Application object.var oXL = new ActiveXObject("Excel.Application");// Get a new workbook.var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;var table = document.all.data;var hang = table.rows.length;var lie = table.rows(0).cells.length;// Add table headers going cell by cell.for (i=0;i<hang;i++){for (j=0;j<lie;j++){oSheet.Cells(i+1,j+1).Value = table.rows(i).cells(j).innerText;}}oXL.Visible = true;erControl = true;}//--></SCRIPT>导出到Word代码<script language="vbscript">Sub buildDocset table = document.all.datarow = table.rows.lengthcolumn = table.rows(1).cells.lengthSet objWordDoc = CreateObject("Word.Document")'objWordDoc.Application.Documents.Add theTemplate, FalseobjWordDoc.Application.Visible=TrueDim theArray(20,10000)for i=0 to row-1for j=0 to column-1theArray(j+1,i+1) = table.rows(i).cells(j).innerTEXTnextnextobjWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("综合查询结果集") //显示表格标题objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("") Set rngPara = objWordDoc.Application.ActiveDocument.Paragraphs(1).Range With rngPara.Bold = True //将标题设为粗体.ParagraphFormat.Alignment = 1 //将标题居中 = "隶书" //设定标题字体.Font.Size = 18 //设定标题字体大小End WithSet rngCurrent = objWordDoc.Application.ActiveDocument.Paragraphs(3).RangeSet tabCurrent = ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,row,column)for i = 1 to columnobjWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.InsertAfter theArray(i,1)objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.Paragraph Format.alignment=1nextFor i =1 to columnFor j = 2 to rowobjWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.InsertAfter theArray(i,j)objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.Paragraph Format.alignment=1NextNextEnd Sub</SCRIPT>在ASP中怎么把页面中的数据导出到EXCEL直接读SQL库,我想也可以用来解决你的问题,(同理:页面上显示的内容当然也是读库的,除非你是静态的那算了)<!--#include file="../opendb.asp"--><!--写链接的事不用我弄了吧?--><title>生成报表</title><%dim conn,strconnset conn=server.CreateObject("adodb.connection")conn.Open ConnStrdim rs,sql,filename,fs,myfile,xSet fs = server.CreateObject("scripting.filesystemobject")filepath=Request.ServerVariables("APPL_PHYSICAL_PATH")filename = filepath&"temp_xls\"&year(now)&month(now)&day(now)&".xls"if fs.FileExists(filename) thenfs.DeleteFile(filename)end ifset myfile = fs.CreateTextFile(filename,true)Set rs = Server.CreateObject("ADODB.Recordset")sql = "select * from jdxx"rs.Open sql,conn,1,1if rs.EOF and rs.BOF thenelsedim strLine,responsestrstrLine=""For each x in rs.fieldsstrLine = strLine & & chr(9)Nextmyfile.writeline strLineDo while Not rs.EOFstrLine=""for each x in rs.FieldsstrLine = strLine & x.value & chr(9)nextmyfile.writeline strLiners.MoveNextloopend ifrs.Closeset rs = nothingremotefile="http://xxx.xxx.x.xxx/temp_xls/"&year(now)&month(now)&day(now)&".xls" response.write "<font size=2 color=blue>报表巳生成,<a href="&remotefile&">请点击这里下载该报表!</a></font>"%>在ASP中怎么把页面中的数据导出到EXCEL<%@ LANGUAGE="VBSCRIPT" CODEPAGE="950"%><%'關鍵所在Response.ContentType = "application/vnd.ms-excel"Set conn=Server.CreateObject("ADODB.Connection")Set rs=Server.CreateObject("ADODB.Recordset")strconn = "Provider = SQLOLEDB; Data Source = 192.168.0.2; Uid=gt_bbs;Pwd=gt_bbs;DataBase=gt_bbs"conn.open strconnSQL="Select top 100 id,uid,uer,bm,zw,zb,gxrq,ip,be From Gt_user order by id desc"rs.Open SQL,conn,3,1if rs.eof and rs.bof thenResponse.Write"<div align=center><br>沒有任何記錄</div>"else%><TABLE cellSpacing=0 cellPadding=0 width="100%" border=1><TR><TD width=12% height="25" class=borderon> 代 </TD> <TD width="11%" class=borderon> 名</TD><TD width="11%" class=borderon> 部門</TD><TD width="14%" class=borderon> </TD><TD width="6%" class=borderon> 別</TD><TD width="16%" class=borderon> 登</TD><TD width="16%" class=borderon> 登 IP</TD> </TR></TABLE><TABLE width="100%" border=1 cellPadding=0 cellSpacing=0><%do while (Not RS.Eof) and (I<RS.PageSize)%><TR bgcolor=<%=bg2%>><TD class=all width=12% height=20 > <%=rs(1)%></TD> <TD width="11%" class=all> <%=rs(2)%></TD><TD width="11%" class=all> <%=rs(3)%></TD><TD width="14%" class=all> <%=rs(4)%></TD><TD width="6%" class=all> <%=rs(5)%></TD><TD width="16%" class=all> <%=rs(6)%></TD><TD width="16%" class=all> <%=rs(7)%></TD></TR><%Rs.MoveNextLoopend IFSet Conn = NothingSet Rs = Nothing%></TABLE>。
js操作html页⾯写⼊excel<html><head><script language="javascript" type="text/javascript"></script><script language="javascript" type="text/javascript">function MakeExcel(){var i,j;try {var xls = new ActiveXObject ( "Excel.Application" );}catch(e) {alert( "要打印该表,您必须安装Excel电⼦表格软件,同时浏览器须使⽤“ActiveX 控件”,您的浏览器须允许执⾏控件。
请点击【帮助】了解浏览器设置⽅法!"); return "";}xls.visible =true; //设置excel为可见var xlBook = xls.Workbooks.Add;var xlsheet = xlBook.Worksheets(1);<!--合并-->xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,7)).mergecells=true;xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,7)).value="发卡记录";// xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Interior.ColorIndex=5;//设置底⾊为蓝⾊// xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Font.ColorIndex=4;//设置字体⾊// xlsheet.Rows(1). Interior .ColorIndex = 5 ;//设置底⾊为蓝⾊设置背景⾊ Rows(1).Font.ColorIndex=4<!--设置⾏⾼-->xlsheet.Rows(1).RowHeight = 25;<!--设置字体 ws.Range(ws.Cells(i0+1,j0), ws.Cells(i0+1,j1)).Font.Size = 13 -->xlsheet.Rows(1).Font.Size=14;<!--设置字体设置选定区的字体 xlsheet.Range(xlsheet.Cells(i0,j0), ws.Cells(i0,j0)) = "⿊体" -->xlsheet.Rows(1)="⿊体";<!--设置列宽 xlsheet.Columns(2)=14;-->xlsheet.Columns("A:D").ColumnWidth =18;<!--设置显⽰字符⽽不是数字-->xlsheet.Columns(2).NumberFormatLocal="@";xlsheet.Columns(7).NumberFormatLocal="@";//设置单元格内容⾃动换⾏ range.WrapText = true ;//设置单元格内容⽔平对齐⽅式 range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//设置单元格内容竖直堆砌⽅式//range.VerticalAlignment=Excel.XlVAlign.xlVAlignCenter//range.WrapText = true; xlsheet.Rows(3).WrapText=true ⾃动换⾏//设置标题栏xlsheet.Cells(2,1).Value="卡号";xlsheet.Cells(2,2).Value="密码";xlsheet.Cells(2,3).Value="计费⽅式";xlsheet.Cells(2,4).Value="有效天数";xlsheet.Cells(2,5).Value="⾦额";xlsheet.Cells(2,6).Value="所属服务项⽬";xlsheet.Cells(2,7).Value="发卡时间";var oTable=document.all['fors:data'];var rowNum=oTable.rows.length;for(i=2;i<=rowNum;i++){for (j=1;j<=7;j++){//html table类容写到excelxlsheet.Cells(i+1,j).Value=oTable.rows(i-1).cells(j-1).innerHTML;}}<!-- xlsheet.Range(xls.Cells(i+4,2),xls.Cells(rowNum,4)).Merge; -->// xlsheet.Range(xlsheet.Cells(i, 4), xlsheet.Cells(i-1, 6)).BorderAround , 4// for(mn=1,mn<=6;mn++) . xlsheet.Range(xlsheet.Cells(1, mn), xlsheet.Cells(i1, j)).Columns.AutoFit;xlsheet.Columns.AutoFit;xlsheet.Range( xlsheet.Cells(1,1),xlsheet.Cells(rowNum+1,7)).HorizontalAlignment =-4108;//居中xlsheet.Range( xlsheet.Cells(1,1),xlsheet.Cells(1,7)).VerticalAlignment =-4108;xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Font.Size=10;xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(3).Weight = 2; //设置左边距xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(4).Weight = 2;//设置右边距xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(1).Weight = 2;//设置顶边距xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(2).Weight = 2;//设置底边距erControl = true; //很重要,不能省略,不然会出问题意思是excel交由⽤户控制xls=null;xlBook=null;xlsheet=null;}</script> <link href="css/styles3.css" rel="stylesheet" type="text/css"/><title>ziyuanweihu</title></head><body><form id="fors" method="post" action="/WebModule/admins/card/showcard.faces" enctype="application/x-www-form-urlencoded"><table id="fors:top" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="left"><img src="images/jiao1.gif" alt="" /></td><td class="topMiddle"></td><td class="right"><img src="images/jiao2.gif" alt="" /></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="middleLeft"></td><td class="btstyle"><table id="fors:sort" border="0" cellpadding="0" cellspacing="0" style="valign:center" width="100%"><tbody><tr><td class="btstyle"><input type="button" name="fors:_id7" value="⽣成excel⽂件" onclick="MakeExcel()" /><input type="submit" name="fors:_id8" value="返回" /></td> </tr></tbody></table><table id="fors:data" border="1" cellpadding="0" cellspacing="1" width="100%"><thead><tr><th scope="col"><span id="fors:data:headerText1">卡号</span></th><th scope="col"><span id="fors:data:headerText2">密码</span></th><th scope="col"><span id="fors:data:headerText3">计费⽅式</span></th><th scope="col"><span id="fors:data:headerText4">有效天数</span></th><th scope="col">⾦额</th><th scope="col"><span id="fors:data:headerText6">所属服务项⽬</span></th><th scope="col"><span id="fors:data:headerText7">发卡时间</span></th></tr></thead><tbody><tr><td>h000010010</td><td>543860</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010011</td><td>683352</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010012</td><td>433215</td><td>计点</td><td></td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010013</td><td>393899</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010014</td><td>031736</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010015</td><td>188600</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010016</td><td>363407</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010017</td><td>175315</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010018</td><td>354437</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr><tr><td>h000010019</td><td>234750</td><td>计点</td><td></td><td>2.0</td><td>测试项⽬</td><td>2006-06-23 10:14:40.843</td></tr></tbody></table></td><td class="middleRight"></td></tr></tbody></table><table id="fors:bottom" border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr><td class="left"><img src="images/jiao3.gif" alt=""/></td><td class="bottomMiddle"> </td><td class="right"><img src="images/jiao4.gif" alt=""/></tr></tbody></table><input type="hidden" name="fors" value="fors" /></form> </body></html>。
htmltabletoexcel用法htmltabletoexcel用法是一种将HTML表格转换为Excel文件的方法。
通过使用这个方法,可以将网页上的表格数据直接导出为Excel文件,方便保存和处理数据。
要使用htmltabletoexcel,需要首先引入相关的JavaScript库。
你可以在网上搜索htmltabletoexcel的代码和文件,并将其下载到你的项目中。
一旦你引入了htmltabletoexcel的代码,就可以在你的HTML页面上使用它了。
在需要将表格导出为Excel的地方,你可以添加一个按钮或者其他触发事件的元素,并在其点击事件中调用htmltabletoexcel方法。
例如,下面是一个简单的示例代码,展示了如何使用htmltabletoexcel来将HTML表格导出为Excel文件:```html<!DOCTYPE html><html><head><title>HTML Table to Excel</title><script src="path/to/htmltabletoexcel.js"></script></head><body><table id="myTable"><thead><tr><th>姓名</th><th>年龄</th><th>性别</th></tr></thead><tbody><tr><td>小明</td><td>20</td><td>男</td></tr><tr><td>小红</td><td>22</td><td>女</td></tr></tbody></table><button onclick="exportTableToExcel('myTable', 'excel')">导出为Excel</button> <script>function exportTableToExcel(tableID, filename = ''){var downloadLink;var dataType = 'application/vnd.ms-excel';var tableSelect = document.getElementById(tableID);var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20'); filename = filename?filename+'.xls':'excel_data.xls';downloadLink = document.createElement('a');document.body.appendChild(downloadLink);if(navigator.msSaveOrOpenBlob){var blob = new Blob(['\ufeff', tableHTML], {type: dataType});navigator.msSaveOrOpenBlob(blob, filename);}else{downloadLink.href = 'data:' + dataType + ', ' + tableHTML; downloadLink.download = filename;downloadLink.click();}}</script></body></html>```在上面的例子中,我们首先引入htmltabletoexcel.js文件,然后在表格下方添加了一个按钮,并在其点击事件中调用了exportTableToExcel方法,将表格导出为Excel文件。
JSP页面中导出Exc el文件及其中文乱码的解决办法Web应用导出Ex cel报表的简单实现(HTML)在Web应用中,很多数据经常要导出成Exc el文档。
用专门的生成真正的E xcel文档的方式比较复杂,不太好用。
所以经常用一种简单的方式来实现,即将报表保存为HTM L格式,然后用Exc el打开。
实现方式:第一步,用JSP实现HTM L版本的报表第二步,在该JS P页面头部设置res ponse的Cont entTy pe为Ex cel格式<%respo nse.s etCon tentT ype("appli catio n/vnd.ms-e xcel;chars et=GB K");%>中文问题:查看源代码时发现J SP文件中写死的中文为乱码,则在JSP文件头部添加一行<%@ pag e con tentT ype="text/html; char set=g b2312" %>查看源代码时发现文字为中文,但是用Exc el打开为乱码则在<html>与<hea d>中加入<met a htt p-equ iv="C onten t-Typ e" co ntent="tex t/htm l; ch arset=GBK">用S ervle t实现也是类似的处理方法。
实现样例:Test.jsp<%@ p age c onten tType="tex t/htm l; ch arset=GBK" %><% res ponse.setC onten tType("app licat ion/v nd.ms-exce l;cha rset=GBK"); %><HTML><me ta ht tp-eq uiv="Conte nt-Ty pe" c onten t="te xt/ht ml; c harse t=GBK"><h ead><title>Test</tit le></head><bod y><T ABLEborde rColo r=#111111cellS pacin g=0 c ellPa dding=2 wi dth=1200 a lign=cente r bor der=1><TR><TD alig n=mid dle w idth="10%" heig ht=20 rowS pan=2>项目</TD><TD a lign=middl e wid th="2%" he ight=20 ro wSpan=2>计量单位 </TD><TD al ign=m iddle widt h="4%" hei ght=20>满期赔付率 </TD></TR></TAB LE></body></H TML>Web应用导出Exc el报表的简单实现(HTML)在Web应用中,很多数据经常要导出成E xcel文档。
ASP导出Excel数据的四种方法一、使用OWC什么是OWC?OWC是Office Web Compent的缩写,即Microsoft的Office Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制。
在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE5和Office 2000),那么就有能力利用Office Web组件提供一个交互式图形开发环境。
这种模式下,客户端工作站将在整个任务中分担很大的比重。
<%Option ExplicitClass ExcelGenPrivate objSpreadsheetPrivate iColOffsetPrivate iRowOffsetSub Class_Initialize()Set objSpreadsheet = Server.CreateObject("OWC.Spreadsheet")iRowOffset = 2iColOffset = 2End SubSub Class_Terminate()Set objSpreadsheet = Nothing "Clean up End SubPublic Property Let ColumnOffset(iColOff) If iColOff > 0 theniColOffset = iColOffElseiColOffset = 2End IfEnd PropertyPublic Property Let RowOffset(iRowOff) If iRowOff > 0 theniRowOffset = iRowOffElseiRowOffset = 2End IfEnd Property Sub GenerateWorksheet(objRS)"Populates the Excel worksheet based on a Recordset"s contents"Start by displaying the titlesIf objRS.EOF then Exit SubDim objField, iCol, iRowiCol = iColOffsetiRow = iRowOffsetFor Each objField in objRS.FieldsobjSpreadsheet.Cells(iRow, iCol).Value = /doc/71b0b63383c4bb4cf7ecd11a.htmlobjSpreadsheet.Columns(iCol).AutoFitColumns"设置Excel表里的字体objSpreadsheet.Cells(iRow, iCol).Font.Bold = True objSpreadsheet.Cells(iRow, iCol).Font.Italic = False objSpreadsheet.Cells(iRow, iCol).Font.Size = 10 objSpreadsheet.Cells(iRow, iCol).Halignment = 2 "居中iCol = iCol + 1Next "objField"Display all of the dataDo While Not objRS.EOFiRow = iRow + 1iCol = iColOffsetFor Each objField in objRS.FieldsIf IsNull(objField.Value) thenobjSpreadsheet.Cells(iRow, iCol).Value = ""ElseobjSpreadsheet.Cells(iRow, iCol).Value = objField.Value objSpreadsheet.Columns(iCol).AutoFitColumns objSpreadsheet.Cells(iRow, iCol).Font.Bold = False objSpreadsheet.Cells(iRow, iCol).Font.Italic = False objSpreadsheet.Cells(iRow, iCol).Font.Size = 10End IfiCol = iCol + 1Next "objFieldobjRS.MoveNextLoopEnd Sub Function SaveWorksheet(strFileName)"Save the worksheet to a specified filenameOn Error Resume NextCall objSpreadsheet.ActiveSheet.Export(strFileName, 0)SaveWorksheet = (Err.Number = 0)End FunctionEnd ClassDim objRSSet objRS = Server.CreateObject("ADODB.Recordset")objRS.Open "SELECT * FROM xxxx", "Provider=SQLOLEDB.1;Persist SecurityInfo=True;User ID=xxxx;Password=xxxx;Initial Catalog=xxxx;Data source=xxxx;"Dim SaveNameSaveName = Request.Cookies("savename")("name")Dim objExcelDim ExcelPathExcelPath = "Excel\" & SaveName & ".xls"Set objExcel = New ExcelGenobjExcel.RowOffset = 1objExcel.ColumnOffset = 1objExcel.GenerateWorksheet(objRS)If objExcel.SaveWorksheet(Server.MapPath(ExcelPath)) then "Response.Write "已保存为Excel文件.下载"ElseResponse.Write "在保存过程中有错误!"End IfSet objExcel = NothingobjRS.CloseSet objRS = Nothing%>二、用Excel的Application组件在客户端导出到Excel或Word 注意:两个函数中的“data“是网页中要导出的table的 id导出到Excel代码导出到Word代码三、直接在IE中打开,再存为EXCEL文件把读出的数据用格式,在网页中显示出来,同时,加上下一句即可把EXCEL表在客客户端显示。
freeMarker模板引擎将表格中的数据导出成Excel•导入freemark包:•1.打开菜单项Help -> install new software... .•2.点击Add Update Site... , 输入"FreeMarker"作为名字以及"- /jbosstools/updates/stable/galileo/作为更新的地址•3.选中复选框 "FreeMarker"•4.点击下一步或完成按钮根据提示完成插件的安装•5.安装完毕后该插件自动关联*.ftl文件,你也可以在对话框中进行自行设置。
•第一部分:•package com.freemark;•//Bean对象•public class ShowBean {••private String name;•private String courseCode;•private String categoryName = null;••public String getName() {•return name;•}•public void setName(String name) {• = name;•}•public String getCourseCode() {•return courseCode;•}•public void setCourseCode(String courseCode) {•this.courseCode = courseCode;•}•public String getCategoryName() {•return categoryName;•}•public void setCategoryName(String categoryName) { •this.categoryName = categoryName;•}••}•••第二部分:•package com.freemark;•//•import java.io.File;•import java.io.FileOutputStream;•import java.io.OutputStreamWriter;•import java.io.Writer;•import java.util.ArrayList;•import java.util.HashMap;•import java.util.List;•import java.util.Locale;•import java.util.Map;••import freemarker.template.Configuration;•import freemarker.template.Template;••public class FreeMarkerTest {••private Configuration config;•public Configuration getConfig(){•return config;•}••/**•* 注意:setEncoding这个方法一定要设置国家及其编码,不然在flt中的中文在生成html后会变成乱码•* @param filePath 文件路径•* @throws Exception•*初始化,获得模板文件路径•*/•public void init(String filePath) throws Exception {•config = new Configuration();•config.setDirectoryForTemplateLoading(new File(filePath));•config.setEncoding(Locale.CHINA, "utf-8");•}••/**•* 通过flt文件用html文件展示数据•* @param templateFile flt模板文件•* @param list 要生成html的集合数据•* @param charset flt生成数据的编码格式•* @param htmlFile 通过flt生成html的文件•* @throws Exception•*将模板和数据模型合并,最终输出html文件•*/•public void showCourse(String templateFile, List<ShowBea n> list, String charset, String htmlFile) throws Exception { •String filePath = FreeMarkerTest.class.getResource("/").getPath().split("bin")[0]+"template/";•init(filePath);•Map<String, Object> root = new HashMap<String, Object >();•Template temp = getConfig().getTemplate(templateFile);•root.put("courseList", list);•String htmlResource = filePath+htmlFile;•Writer out=new OutputStreamWriter(new FileOutputStrea m(htmlResource), charset);•temp.process(root, out);•}••public static void main(String[] args) throws Exception {•//创建数据模型•FreeMarkerTest test = new FreeMarkerTest();•ShowBean bean1 = new ShowBean();•bean1.setCategoryName("哈哈哈哈");•bean1.setCourseCode("呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀");•bean1.setName("name1");••ShowBean bean2 = new ShowBean();•bean2.setCategoryName("嘻嘻嘻嘻嘻嘻嘻嘻");•bean2.setCourseCode("和哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");•bean2.setName("name2");••ShowBean bean3 = new ShowBean();•bean3.setCategoryName("嗯嗯嗯嗯嗯嗯嗯");•bean3.setCourseCode("嘿嘿和而后哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");•bean3.setName("name3");••List<ShowBean> list = new ArrayList<ShowBean>();•list.add(bean1);•list.add(bean2);•list.add(bean3);••test.showCourse("course.ftl", list, "utf-8", "course.html");•}••}••第三部分•//然后写ftl模板我把ftl存放在/WEB-INF/templates/ 目录下新建index.ftl 写要迭代的数据•//模板•<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xht ml1-transitional.dtd">•<html xmlns="/1999/xhtml">•<head>•<meta http-equiv="Content-Type" content="text/html; charset=utf-8">•</head>•<body>•<table border="0">•<#list courseList as row>•<tr>•<td>•<#if row.categoryName?exists>•[<font color="red">${row.categoryName}</font>]•</#if>•<a href="/${row.courseCode}">${ro }</a>•</td>•</tr>•</#list>•</table>•<div align="right">•${showMore?default("更多...")}•</div>•</body>•</html>•••备注:•在项目中加入template文件夹•template中存放course.ftl模板。
C#导入导出EXCEL------------阿秋笔记add by 2011-3-24注:本文中的所有案例全部测试通过,请放心使用!三大功能:1,导入:把EXCEL文件导入到对应的数据库表中2,导出:(1)把HTML页面直接导出到EXCEL;(2)把DataTable对象导出到EXCEL 环境:VS2005 + SQL SERVER 2005 Language:C#1,导入步骤:上传EXCEL文件,保存到服务器某一个文件夹下,然后解析的DataTable中,在分解插入到数据库表中实现代码:(1)前台,Default.aspx 放入一个上传控件FileUpload + 按钮控件Button代码:<asp:FileUpload ID="FU"runat="server"Width="595px"/><asp:Button ID="btnUpload"runat="server"Text="上传"OnClick="btnUpload_Click"/> (2)后台Default.asp.cs代码:-----按钮单击事件btnUpload_Clickprotected void btnUpload_Click(object sender, EventArgs e){if (this.FU.PostedFile == null || this.FU.PostedFile.FileName == "") //判断是否选择上载文件{this.RegisterStartupScript("1","alert('请选择上传的数据文件!');");return;}string m_ExtName =Path.GetExtension(TrimHtml(Path.GetFileName(this.FU.PostedFile.FileName))).ToLower();if ((m_ExtName.Replace(".", "") != "xls")){this.RegisterStartupScript("2","alert('请上传Execl类型文件!');");return;}string newname = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + m_ExtName;FU.PostedFile.SaveAs(Server.MapPath("~/xx/"+newname));string fPath = Request.PhysicalApplicationPath + "xx/" + newname;fPath = fPath.Replace("\\", "/");DataTable dt = ExcelToDS(fPath, "LAWUSER");bool IsSuccessful = true;string _errorRow = "";foreach (DataRow row in dt.Rows){if (row["姓名"].ToString().Trim().Equals("")){continue;}string id = row["编号"].ToString();string name = row["姓名"].ToString();string tel = row["联系电话"].ToString();string sql = "insert into AA values('" + id + "','" + name + "','" + tel + "')";try{int i = SqlHelper1.ExecuteNonQuery(sql);if (i > 0){this.RegisterStartupScript("4", "susccessfully");}else{ this.RegisterStartupScript("4","插入错误"); }}catch (Exception ex){this.RegisterStartupScript("3","alert('"+ex.Message+"');");}}}-----函数ExcelToDS,这里的ExtandName是指EXCEL中对应的Sheet1修改后的名称private DataTable ExcelToDS(string Path, string ExtandName){string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ Path + ";"+ "Extended Properties='Excel 8.0;'";OleDbConnection conn = new OleDbConnection(strConn);conn.Open();string strExcel = "";OleDbDataAdapter myCommand = null;DataSet ds = null;strExcel = "select * from [" + ExtandName + "$]";myCommand = new OleDbDataAdapter(strExcel, strConn);ds = new DataSet();myCommand.Fill(ds, "table1");return ds.Tables[0];}-----对字符串操作函数TrimHtmlprivate string TrimHtml(string str){return str.Replace("&", "").Replace("<", "").Replace("'", "").Replace("\"","").Replace("\\", "");}(3)数据库表格式:CREATE TABLE [dbo].[AA]([id] [int] NOT NULL,[name] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,[tel] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT [PK_AA] PRIMARY KEY CLUSTERED([id] ASC)WITH(PAD_INDEX =OFF, STATISTICS_NORECOMPUTE =OFF, IGNORE_DUP_KEY =OFF, ALLOW_ROW_LOCKS =ON, ALLOW_PAGE_LOCKS =ON)ON [PRIMARY])ON [PRIMARY]注意表列与DataTable中的数据一一对应即可2,导出,将HTML导出到EXCEL,注:我这里是后台实现导出,也有用JS脚本导出的。
Web导出excel的几种方法Web导出excel的几种方法ExcelWebIE浏览器应用服务器在项目中我们经常遇到需要将报表导出成excel下载保存下来,在不同的要求和不同的资源情况下我们有不同的处理方式。
在这里我将谈谈我所遇到的几种情况和遇到的一些问题。
总的来说可以分为:服务器端生成和浏览器端生成2种方法。
一、服务器端生成就是:根据用户请求,获取相应的数据,使用poi/jxl, jacob/jawin+excel或是用数据拼html的table或是cvs纯文本的数据格式等。
然后按.xls或是.cvs格式的文件的形式返回给用户,指定Content-Type:application/vnd.ms-excel ,浏览器就会提示要下载的文件是excel文件。
一般情况下采用这种方式的话就可以根据具体要求对excel文件进行细致的处理,各方面样式和排列可以自己控制使用,而且是可以跨平台使用的。
缺点就是毕竟需要根据不同的表格进行不断的coding,服务器也有一定的压力,这里我就不进行例子解释了。
二、浏览器端生成excel文件还没有特别完善的方案,这是因为js 无法处理二进制。
大概有以下几个方案,各有利弊1.activex方式:使用js调用excel对象,传入需要的参数直接导出excel。
这种方式代码简单,速度较快,前段时间用过2种采用这种方式的方法,各有千秋:A:页面table拷贝法:var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application");var oWB = oXL.Workbooks.Add(); //创建AX对象excelvar oSheet = oWB.ActiveSheet; //获取workbook对象var sel = document.body.createTextRange(); //激活当前sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中sel.select(); //全选TextRange中内容sel.execCommand("Copy"); //复制TextRange中内容oSheet.Paste(); //粘贴到活动的EXCEL中oXL.Visible = true; //设置excel可见属性如上代码可见,这个方法需要传入的就是table的ID,通过拷贝table复制到excel的方式执行,这个方法的特点是可见即所得,当然页面格子大小不能控制精细,只能得到当前页面展示的table部分,如table做了分页处理的话,直接导出的也只是当前页面部分。
repeater把数据导出到Excel方法一:StringWriter sw = new StringWriter();HtmlTextWriter htw = new HtmlTextWriter(sw);string attachment = "attachment; filename=myReport.xls";Response.ClearContent();Response.AddHeader("content-disposition", attachment);Response.ContentType = "application/octet-stream";repMessage.RenderControl(htw);Response.Write(sw.ToString());Response.Flush();Response.End();方法二:StringBuilder sb = new StringBuilder();StringWriter sw = new StringWriter(sb);HtmlTextWriter htw = new HtmlTextWriter(sw);Page page = new Page();HtmlForm form = new HtmlForm();Repeater1.EnableViewState = false;page.EnableEventValidation = false;page.DesignerInitialize();page.Controls.Add(form);form.Controls.Add(Repeater1);page.RenderControl(htw);Response.Clear();Response.Buffer = true;Response.ContentType = "application/ms-excel";Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("Test.xls", Encoding.UTF8).ToString());Response.Charset = "UTF-8";Response.ContentEncoding = Encoding.Default;Response.Write(sb.ToString());Response.End();分页Repeater导出数据到Excel1.导出Repeater中的数据时,导出的数据必须是完整的数据块,例如:完整的table。
C#数据导⼊导出Excel⽂件及winForm导出Execl总结在中导出Execl有两种⽅法,⼀种是将导出的⽂件存放在服务器某个⽂件夹下⾯,然后将⽂件地址输出在浏览器上;⼀种是将⽂件直接将⽂件输出流写给浏览器。
在Response输出时,\t分隔的数据,导出execl时,等价于分列,\n等价于换⾏。
此法将html中所有的内容,如按钮,表格,图⽚等全部输出到Execl中。
复制代码代码如下:Response.Clear();Response.Buffer= true;Response.AppendHeader("Content-Disposition","attachment;filename="+DateTime.Now.ToString("yyyyMMdd")+".xls");Response.ContentEncoding=System.Text.Encoding.UTF8;Response.ContentType = "application/vnd.ms-excel";this.EnableViewState = false;这⾥我们利⽤了ContentType属性,它默认的属性为text/html,这时将输出为超⽂本,即我们常见的⽹页格式到客户端,如果改为ms-excel将将输出excel格式,也就是说以电⼦表格的格式输出到客户端,这时浏览器将提⽰你下载保存。
ContentType的属性还包括:image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 。
同理,我们也可以输出(导出)图⽚、word⽂档等。
下⾯的⽅法,也均⽤了这个属性。
上述⽅法虽然实现了导出的功能,但同时把按钮、分页框等html中的所有输出信息导了进去。
⽽我们⼀般要导出的是数据,DataGrid控件上的数据。
系统设置不能直接调用EXCEL,并要求用PACKAGE写,输出EXCEL折中办法采用的办法是先输出HTML文件,然后再用HTML脚本进行转化为EXCEL。
================================================ ===========PROCEDURE MAIN(ERRCODE OUT VARCHAR2,ERRBUF OUT VARCHAR2,P_ORG_ID IN NUMBER) ISCURSOR CUR_A ISSELECT PV.VENDOR_ID,PV.VENDOR_NAME,PV.SEGMENT1,ASSA.VENDOR_SITE_ID,ASSA.VENDOR_SITE_CODE,HPS.PARTY_SITE_NAME,_IDFROM PO_VENDORS PV,AP_SUPPLIER_SITES_ALL ASSA, --地点HZ_PARTY_SITES HPS --地址WHERE PV.VENDOR_ID = ASSA.VENDOR_ID(+)AND ASSA.PARTY_SITE_ID = HPS.PARTY_SITE_IDAND _ID = P_ORG_IDORDER BY VENDOR_ID;BEGINFND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<html>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<head>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<meta http-equiv="Content-Type" content="text/html; charset=gb2312">'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<style type="text/css">'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' h2 {font-size: 30pt; font-family:''宋体, Arial''}')); --24--35pt FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' td, body {font-size: 15px; font-family:''宋体, Arial''}'));--16--18pxFND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' div.breakafter { page-break-after:always; }'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' div.breakbefore { page-break-before:always; }'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</style>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<script defer>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('function SetPrintSettings() {'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' factory.printing.header = "";'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' factory.printing.footer = "";'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' factory.printing.portrait = true;'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' factory.printing.leftMargin = 10.0;')); --25(' factory.printing.topMargin = 10.0;')); --20FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' factory.printing.rightMargin = 10.0;'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' factory.printing.bottomMargin = 10.0;'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('}'));-- CNC_PRJNL_PUT_LINE(p_srs_flag,'OUTFILE', 'SetPrintSettings();'); FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</script>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<script>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('var excelObj; var $Table; ')); FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('function printTable(talbleId){')); FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' var rows,cols; var i,j; '));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' $Table=document.all(talbleId); '));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' rows=$Table.rows.length;')); FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' if(rows>0){ '));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' try{'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' cols=$Table.rows(0).children.length; '));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' excelObj = new ActiveXObject("Excel.Application");'));(' excelObj.Visible = true; '));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' excelObj.WorkBooks.Add;'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' for(i=1;i<=rows;i++) '));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' for(j=1;j<=cols;j++){'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' showInExcel(i,j,$Table.rows(i-1).children(j-1).innerTex t);'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' }'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' }catch(e){alert("生成Excel失败!");} '));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' }'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' else{'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' alert("no data");}'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' }'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('function showInExcel(row,col,value){'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,(' excelObj.Cells(row, col).Value=value; '));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' }'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</script>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</head>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<body>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<table name="excel_table" id="excel_table" align=center style="width: 850px; vertical-align: center; text-align: left;" border="1" cellpadding="0" cellspacing="0">'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tbody>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tr>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商ID</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商名称</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 10%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商编码</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 10%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商地点ID</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商地点编码</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商地址</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商地点对应组织ID</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tr>'));FOR REC_A IN CUR_A LOOPFND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tr>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||REC_A.VENDOR_ID || '</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||REC_A.VENDOR_NAME || '</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 10%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||REC_A.SEGMENT1 || '</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 10%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||REC_A.VENDOR_SITE_ID || '</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||REC_A.VENDOR_SITE_CODE || '</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||REC_A.PARTY_SITE_NAME || '</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||REC__ID || '</span></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tr>'));END LOOP;FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tbody></table>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<table ><tbody>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<table align=center style="width: 850px; vertical-align: center; text-align: left;" border="0" cellpadding="0" cellspacing="0">'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tbody>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tr>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT,('<td align="right"><input type="submit" name="C_EXCEL" value="保存成Excel" id="C_EXCEL" onclick="printTable(''excel_table'')"/></td>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tr>'));FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tbody></table>'));END MAIN;。
html页面表格导出到excel总结最近一个项目需要把报表的表格导入excel,在网上找了一些方法,比较研究了一下,记在这里,备忘。
表格例子如下:<table id="tableExcel"width="100%"border="1"cellspacing="0" cellpadding="0"><tr><td colspan="5"align="center">html 表格导出道Excel td> tr><tr><td>列标题1td><td>列标题2td><td>类标题3td><td>列标题4td><td>列标题5td>tr><tr><td>aaa td><td>bbb td><td>ccc td><td>ddd td><td>eee td>tr><tr><td>AAA td><td>BBB td><td>CCC td><td>DDD td><td>EEE td>tr><tr><td>FFF td><td>GGG td><td>HHH td><td>III td><td>JJJ td>tr>table>1、js的方法A、将整个表格拷贝到EXCEL中function method1(tableid) {var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application");var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;var sel = document.body.createTextRange();sel.moveToElementText(curTbl);sel.select();sel.execCommand("Copy");oSheet.Paste();oXL.Visible = true;}B、读取表格中每个单元到EXCEL中:function method2(tableid){var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application"); var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;var Lenr = curTbl.rows.length;for (i = 0; i < Lenr; i++){var Lenc = curTbl.rows(i).cells.length;for (j = 0; j < Lenc; j++){oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;}}oXL.Visible = true;}c、把表格输出到另一个页面,然后存成cvs格式function getXlsFromTbl(inTblId, inWindow){try {var allStr = "";var curStr = "";if (inTblId != null && inTblId != "" && inTblId != "null") { curStr = getTblData(inTblId, inWindow);}if (curStr != null) {allStr += curStr;}else {alert("你要导出的表不存在");return;}var fileName = getExcelFileName();doFileExport(fileName, allStr);}catch(e) {alert("导出发生异常:" + + "->" + e.description + "!"); }}function getTblData(inTbl, inWindow) {var rows = 0;var tblDocument = document;if (!!inWindow && inWindow != "") {if (!document.all(inWindow)) {return null;}else {tblDocument = eval(inWindow).document;}}var curTbl = tblDocument.getElementById(inTbl);var outStr = "";if (curTbl != null) {for (var j = 0; j < curTbl.rows.length; j++) {for (var i = 0; i < curTbl.rows[j].cells.length; i++) {if (i == 0 && rows > 0) {outStr += " /t";rows -= 1;}outStr += curTbl.rows[j].cells[i].innerText + "/t";if (curTbl.rows[j].cells[i].colSpan > 1) {for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {outStr += " /t";}}if (i == 0) {if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {rows = curTbl.rows[j].cells[i].rowSpan - 1;}}}outStr += "/r/n";}}else {outStr = null;alert(inTbl + "不存在!");}return outStr;}function getExcelFileName() {var d = new Date();var curYear = d.getYear();var curMonth = "" + (d.getMonth() + 1);var curDate = "" + d.getDate();var curHour = "" + d.getHours();var curMinute = "" + d.getMinutes();var curSecond = "" + d.getSeconds();if (curMonth.length == 1) {curMonth = "0" + curMonth;}if (curDate.length == 1) {curDate = "0" + curDate;}if (curHour.length == 1) {curHour = "0" + curHour;}if (curMinute.length == 1) {curMinute = "0" + curMinute;}if (curSecond.length == 1) {curSecond = "0" + curSecond;}var fileName = "table" + "_" + curYear + curMonth + curDate + "_"+ curHour + curMinute + curSecond + ".csv";return fileName;}function doFileExport(inName, inStr) {var xlsWin = null;if (!!document.all("glbHideFrm")) {xlsWin = glbHideFrm;}else {var width = 6;var height = 4;var openPara = "left=" + (window.screen.width / 2 - width / 2)+ ",top=" + (window.screen.height / 2 - height / 2)+ ",scrollbars=no,width=" + width + ",height=" + height; xlsWin = window.open("", "_blank", openPara);}xlsWin.document.write(inStr);xlsWin.document.close();xlsWin.document.execCommand('Saveas', true, inName);xlsWin.close();}总结:比较上面3种方法,感觉第一种方法比较完美一些,因为这种方法比较完整的输出表格的格式。
但,第一和第二种方法都用了ActiveX 对象,对客户端的安全有要求,而且最大的问题还有一个,就是excel 对象无法关闭。