asposel输出datatable到excel
如何用asp把access中数据导出到excel表格中
如何用asp把access中数据导出到excel表格中?ASP操作Excel技术总结目录一、环境配置二、ASP对Excel的基本操作三、ASP操作Excel生成数据表四、ASP操作Excel生成Chart图五、服务器端Excel文件浏览、下载、删除方案六、附录正文一、环境配置服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:1.Win9x+PWS+Office2.Win2000 Professional+PWS+Office3.Win2000 Server+IIS+Office目前笔者测试成功的环境是后二者。
Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。
服务器端环境配置还有两个偶然的发现是:1.笔者开发机器上原来装有金山的WPS2002,结果Excel对象创建始终出现问题,卸载WPS2002后,错误消失。
2.笔者开发ASP代码喜欢用FrontPage,结果发现如果FrontPage打开(服务器端),对象创建出现不稳定现象,时而成功时而不成功。
扩展考察后发现,Office系列的软件如果在服务器端运行,则Excel 对象的创建很难成功。
服务器端还必须要设置的一点是COM组件的操作权限。
在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择Microsoft Excel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone 加入所有权限。
保存完毕后重新启动服务器。
客户端的环境配置没发现什么特别讲究的地方,只要装有Office和IE即可,版本通用的好象都可以。
二、ASP对Excel的基本操作1、建立Excel对象set objExcelApp = CreateObject("Excel.Application")objExcelApp.DisplayAlerts = false不显示警告objExcelApp.Application.Visible = false不显示界面2、新建Excel文件objExcelApp.WorkBooks.addset objExcelBook = objExcelApp.ActiveWorkBookset objExcelSheets = objExcelBook.Worksheetsset objExcelSheet = objExcelBook.Sheets(1)3、读取已有Excel文件strAddr = Server.MapPath(".")objExcelApp.WorkBooks.Open(strAddr & "\Templet\Table.xls")set objExcelBook = objExcelApp.ActiveWorkBookset objExcelSheets = objExcelBook.Worksheetsset objExcelSheet = objExcelBook.Sheets(1)4、另存Excel文件objExcelBook.SaveAs strAddr & "\Temp\Table.xls"5、保存Excel文件objExcelBook.Save(笔者测试时保存成功,页面报错。
Aspose.Cells操作 导出实例(模板导出)
本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件。
这个组件的强大之处,就不多说,对于我们的报表总是会有导出Excel的处理,如果你使用微软Excel的com组件,那么对于简单的操作还行,但是多余复杂的模板,那将是一个令人头疼的事。
在Aspose.Cells之下,将是一个简单的事情。
他可以导入导出excel操作,在本节将要说的就是他的际遇excel模板的导出强大功能。
多的不说,我们先来利用Northwind做两个小demo。
先说说Aspose.Cells的模板语法:1.&=DataSource.Field,&=[DataSource].[Field]是对DataTable和几何类型的引用,将会从当前行开始竖直向下生成多行数据。
2.&=$data:是对变量或数组的引用。
数组存在skip,horizontal等属性,具体参见官方网站3.&=&=动态公式计算;{r}当前行,{c}当前列,{-n},{n}当前行或列的偏移量前n或后n。
4.&==是动态计算,如excel,if等语句。
(if(logic_test,true_value,false_value))还有其他更为复杂的汇总计算的表达式,这里也不在这节多讲,有兴趣的朋友,可以去官网看看。
我们先来个简单的例子,光说,总是不行的,还是要代码实践才能说明一切:Excel模板1:代码:在我们的代码中添加数据源:如下:View Code1var sql = @"select * from Customers2 where Customers.City ='London'";3 var dt=GetDataTable(sql);4 dt.TableName = "Customers";5 WorkbookDesigner designer = new WorkbookDesigner();6 designer.Open(MapPath("~/1.xls"));7//数据源8 designer.SetDataSource(dt);9//报表单位10 designer.SetDataSource("ReportUtils", "xxxxx有限公司客户信息");11 designer.SetDataSource("ReportAdd", "London");12//截止日期13 designer.SetDataSource("ReportDate", DateTime.Now.ToString("yyyy年MM月dd日"));1415 designer.Process();1617 designer.Save(string.Format("report.xls"), SaveType.OpenInExcel, FileFormatType.E xcel2003, Response);18 Response.Flush();19 Response.Close();20 designer = null;21 Response.End();代码很简单,就是添加了一个datatable,和几个变量的数据源,我们所生成excel为:这就完成了我们的一个简单的多表头数据导出报表。
aspose.cells根据模板导出excel
aspose.cells根据模板导出excel ⼜隔⼗多天没写博客了,最近都在忙项⽬的事情,公司⼈事变动也⽐较⼤,⼿头上就⼜多了⼀个项⽬。
最近做⽤aspose.cells根据模板导出excel报价单的功能,顺便把相关的核⼼记下来,先上模板和导出的效果图吧,如下: 导出效果图(看到产品图,打不死的程(diao)序(si)员(猿)骚动吧,有没有不禁看了看⾃⼰粗⼤的右⼿): (其中红⾊框框起来的是动态填充的内容,⼯作薄名(产品信息)也是动态输出的) 模板如下: ⼤概流程是这样,先把需要输出到excel的内容存到⼀个model⾥⾯,然后把该model编程⼀个datatable,然后就直接绑定在指定的excel模板上,然后把excel转成流根据excel格式输出到客户端。
以下为将置顶的model绑定在指定的模板上(模板后⾯附上)///<summary>///返回Excel⽂件流///</summary>///<param name="model">数据</param>///<param name="templateFileName">模板⽂件,要全路径</param>///<param name="sheetName">⼯作簿名称</param>///<param name="outDesigner">⼯作簿名称</param>///<returns></returns>public static MemoryStream OutModelFileToStream(DataTable model, string templateFileName, string sheetName, Action<WorkbookDesigner, DataTable> action) {WorkbookDesigner designer = new WorkbookDesigner();designer.Open(templateFileName);designer.SetDataSource(model);//对designer做额外操作if (action != null){action(designer, model);}//SetCellWithPicture(designer, model.Rows[0]["ProductLogo"].ToString(), 3, 5, 17, 8);designer.Process();if (!string.IsNullOrEmpty(sheetName)){designer.Workbook.Worksheets[0].Name = sheetName;}return designer.Workbook.SaveToStream();} 最后⼀个参数action是为了让⽤户可以在将基本的数据绑定在excel表上之后,可以做⼀些额外的补充操作,⽐如说控制某些特殊部分的格式或者说是某个位置要输出图⽚等,我做的时候,就是要在excel表的某个位置动态输出⼀个图⽚才做了如此操作。
Aspose.Cells组件导出excel文件
Aspose.Cells组件导出excel⽂件本⽂实例为⼤家分享了Aspose.Cells导出excel⽂件的⽅法,供⼤家参考,具体内容如下/// <summary>/// 导出数据到本地/// </summary>/// <param name="dt">要导出的数据</param>/// <param name="tableName">导出名称</param>/// <param name="tableTitle">表格⾏名格式“账号,密码”</param>/// <param name="response">请求</param>public static void OutFileToDisk(DataTable dt, string tableName, string tableTitle, HttpResponse response){Workbook workbook = new Workbook(); //⼯作簿Worksheet sheet = workbook.Worksheets[0]; //⼯作表Cells cells = sheet.Cells;//单元格//为标题设置样式Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式styleTitle.HorizontalAlignment = TextAlignmentType.Center;//⽂字居中 = "宋体";//⽂字字体styleTitle.Font.Size = 18;//⽂字⼤⼩styleTitle.Font.IsBold = true;//粗体//样式2Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式style2.HorizontalAlignment = TextAlignmentType.Center;//⽂字居中 = "宋体";//⽂字字体style2.Font.Size = 14;//⽂字⼤⼩style2.Font.IsBold = true;//粗体style2.IsTextWrapped = true;//单元格内容⾃动换⾏style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;//样式3Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式style3.HorizontalAlignment = TextAlignmentType.Center;//⽂字居中 = "宋体";//⽂字字体style3.Font.Size = 12;//⽂字⼤⼩style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;int Colnum = dt.Columns.Count;//表格列数int Rownum = dt.Rows.Count;//表格⾏数//⽣成⾏1 标题⾏cells.Merge(0, 0, 1, Colnum);//合并单元格cells[0, 0].PutValue(tableName);//填写内容cells[0, 0].SetStyle(styleTitle);cells.SetRowHeight(0, 38);//⽣成⾏2 列名⾏string[] Tile = tableTitle.Split(',');for (int i = 0; i < Colnum; i++){cells[1, i].PutValue(Tile[i]);cells[1, i].SetStyle(style2);cells.SetRowHeight(1, 25);}//⽣成数据⾏for (int i = 0; i < Rownum; i++){for (int k = 0; k < Colnum; k++){cells[2 + i, k].PutValue(dt.Rows[i][k].ToString());cells[2 + i, k].SetStyle(style3);}cells.SetRowHeight(2 + i, 24);}workbook.Save(response, HttpUtility.UrlEncode(tableName, System.Text.Encoding.UTF8) + ".xls", ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Excel97To2003)); }调⽤string tableTitle = "账号,密码";ExcelHelp.OutFileToDisk(dt, "账户信息", tableTitle , HttpContext.Current.Response);前台页⾯window.open("⽅法", "_blank");//点击下载Aspose.Cells.dll以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
用ASP生成Excel数据
用ASP生成Excel数据ASP最广泛的用途之一就是生成数据库驱动的Web 报告。
通常,这只是在浏览器内的一个HTML 表格中观看报告,但对于某些用户来说是不够的。
这些用户希望下载报告的数据,用他们自己的应用程序修改它们,这些应用程序包括电子表格软件(Microsoft Excel) 或本地数据库(Microsoft Access)。
我将用ASP 示范多种将数据输出到Microsoft Excel可读格式的技巧。
通过使用一个或多个这些技巧,你就可以在你的web 页面上放置一个“输出到Excel”的选项以满足那些用户。
原文出处:/articles/19991103.htm测试环境我使用以下环境创建并测试本文提供的样本:Windows NT 4/SP5 与 IIS 4Windows 95Internet Explorer 4.x 和 5Interdev 6Homesite 4.0Access 97Excel 97这可能是将一个html 表格变成 Microsoft Excel 格式的最快方法。
ContentType 属性通知浏览器数据要被格式化为何种格式,在这里我们要的格式是Microsoft Excel。
当浏览器看到这个属性的值是Excel 时,它就提示用户保存或打开这个文件。
如果用户选择打开文件,就启动了Excel并在其中观看数据。
为使其工作正确,必须在向Response对象写入任何内容之前设置ContentType 。
此语法的例子如下:Line 1: 〈 %@ LANGUAGE="VBSCRIPT" % 〉Line 2: Response.ContentType = "application/msexcel"Line 3: % 〉点击这里可以得到有关ASP的Response 对象的ContentType属性的更多信息。
当我试图用Internet Explorer 4.x.测试时发现了一个问题,在Microsoft文章 Q185978曾经提到过。
asp.net导出数据到EXCEL的方法总结
导出数据到EXCEL的方法总结在中导出数据到EXCEL里的方法很多,本文总结了常见的几种导出方式(由dataset生成,由datagrid生成,dataview ),供大家参考!1、由dataset生成public void CreateExcel(DataSet ds,string typeid,string FileName){HttpResponse resp;resp = Page.Response;resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);string colHeaders= "", ls_item="";int i=0;//定义表对象与行对像,同时用DataSet对其值进行初始化DataTable dt=ds.T ables[0];DataRow[] myRow=dt.Select("");// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件if(typeid=="1"){//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符for(i=0;i colHeaders+=dt.Columns[i].Caption.ToString()+" \t";colHeaders +=dt.Columns[i].Caption.ToString() +"\n";//向HTTP输出流中写入取得的数据信息resp.Write(colHeaders);//逐行处理数据foreach(DataRow row in myRow){//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\nfor(i=0;i ls_item +=row[i].ToString() + "\t";ls_item += row[i].T oString() +"\n";//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据resp.Write(ls_item);ls_item="";}}else{if(typeid=="2"){//从DataSet中直接导出XML数据并且写到HTTP输出流中resp.Write(ds.GetXml());}}//写缓冲区中的数据到HTTP头文件中resp.End();}2、由datagrid生成public void ToExcel(System.Web.UI.Control ctl){HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");HttpContext.Current.Response.Charset ="UTF-8";HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/mswordctl.Page.EnableViewState =false;System.IO.StringWriter tw = new System.IO.StringWriter() ;System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);ctl.RenderControl(hw);HttpContext.Current.Response.Write(tw.ToString());HttpContext.Current.Response.End();}用法:ToExcel(datagrid1);3、这个用dataviewpublic void OutputExcel(DataView dv,string str){//// TODO: 在此处添加构造函数逻辑////dv为要输出到Excel的数据,str为标题名称GC.Collect();Application excel;// = new Application();int rowIndex=4;int colIndex=1;_Workbook xBk;_Worksheet xSt;excel= new ApplicationClass();xBk = excel.Workbooks.Add(true);xSt = (_Worksheet)xBk.ActiveSheet;////取得标题//foreach(DataColumn col in dv.Table.Columns){colIndex++;excel.Cells[4,colIndex] = col.ColumnName;xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]). HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐}////取得表格中的数据//foreach(DataRowView row in dv){rowIndex ++;colIndex = 1;foreach(DataColumn col in dv.Table.Columns){colIndex ++;if(col.DataType == System.Type.GetType("System.DateTime")){excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].T oString())).ToString ("yyyy-MM-dd");xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[row Index,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐}elseif(col.DataType == System.Type.GetType("System.String")) {excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].T oString();xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[row Index,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐}else{excel.Cells[rowIndex,colIndex] = row[col.ColumnName].T oString();}}}////加载一个合计行//int rowSum = rowIndex + 1;int colSum = 2;excel.Cells[rowSum,2] = "合计";xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]). HorizontalAlignment = XlHAlign.xlHAlignCenter;////设置选中的部分的颜色//xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSu m,colIndex]).Select();xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSu m,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种////取得整个报表的标题//excel.Cells[2,2] = str;////设置整个报表的标题格式//xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;////设置报表表格为最适应宽度//xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]). Select();xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]). Columns.AutoFit();////设置整个报表的标题为跨列居中//xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Horizo ntalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;////绘制边框//xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]). Borders.LineStyle = 1;xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Border s[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Border s[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置上边线加粗xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colI ndex]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colI ndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗////显示效果//excel.Visible=true;//xSt.Export(Server.MapPath(".")+"\\"+this.xlfile.Text+".xls",S heetExportActionEnum.ssExportActionNone,Microsoft.Office.Int erop.OWC.SheetExportFormat.ssExportHTML );xBk.SaveCopyAs(Server.MapPath(".")+"\\"+this.xlfile.Text+". xls ");ds = null;xBk.Close(false, null,null);excel.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject (xBk);System.Runtime.InteropServices.Marshal.ReleaseComObject (excel);System.Runtime.InteropServices.Marshal.ReleaseComObject (xSt);xBk = null;excel = null;xSt = null;GC.Collect();string path = Server.MapPath(this.xlfile.Text+".xls");System.IO.FileInfo file = new System.IO.FileInfo(path);Response.Clear();Response.Charset="GB2312";Response.ContentEncoding=System.Text.Encoding.UTF8;// 添加头信息,为"文件下载/另存为"对话框指定默认文件名Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode());// 添加头信息,指定文件大小,让浏览器能够显示下载进度Response.AddHeader("Content-Length",file.Length.T oString());// 指定返回的是一个不能被客户端读取的流,必须被下载Response.ContentType = "application/ms-excel";// 把文件流发送到客户端Response.WriteFile(file.FullName);// 停止页面的执行Response.End();}本文来自: IT知道网() 详细出处参考:/html/net/aspnet/20091028/6722.html。
asp.net 导出datatable到excel
sb.Append("</x:ExcelWorkbook>");
sb.Append("</xml>");
sb.Append("<![endif]-->");
sb.Append(" </head>");
curContext.Response.Write(AddExcelbottom());//显示excel的网格线
curContext.Response.Flush();
curContext.Response.End();
}
sb.Append("</body>");
sb.Append("</html>");
return sb.ToString();
}
#endregion
return data;
}
public static string AddExcelHead()
{
StringBuilder sb = new StringBuilder();
sb.Append("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
else
data += "<td>" + row[column].ToString() + "</td>";
在ASP中怎么把页面中的数据导出到EXCEL
使用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>。
asp网页中导出数据到Excel...
asp网页中导出数据到Excel...
帮同事做一个非师范生教师资格证报名系统。
学生注册了信息后,管理员要把数据导出到excel中。
结果问题出现了:身份证号和手机号码导出后变成科学计数法,如果设置单元格格式为文本,身份证号码后的几位数都会变成0.在网上找了很久,没有很方便的解决办法。
灵机一动,我想起来一个最简单的办法,和大家分享:
大家知道excel中输入一串数字,想要作为文本,前面可以加个英文的单引号。
那我在将学生的身份证号和手机号码存入数据表之前,在这两个字段前手动加个单引号:
rs.addnew()
rs("身份证号码")=“‘”&request("sfzh")'&前面其实就是双引号引了一个单引号
rs("手机号码")="'"&request("tel")
……
rs.update
哈哈,我是不是很聪明?
不过问题又出来了。
导出数据后,excel中这两列每个数字前面都能看到单引号,而且打印的时候会把单引号打印处理。
怎么办?在网上搜索了一圈,找到解决办法:
第一个方法是首先是将数字一列选中,选择数据——分列,单击“下一步”,文本分割符号选择单引号’。
继续单击下一步,在“列数据格式”选项中选择“文本”。
哈哈,所有数字前面都能看到那个养眼的绿色三角洲了。
.net把datatable导出到excel
.net把datatable导出到exceldsResult = BaseClass.Query(sql);#region 用NPOI方式导出,数据量过多则抛出内存溢出异常//using (System.IO.MemoryStream ms = Util.DataSetToExcel(dsResult))//{// string pathtmp = folder + name + ".xlsx";// using (System.IO.FileStream fs = new System.IO.FileStream(pathtmp, System.IO.FileMode.Create, System.IO.FileAccess.Write))// {// byte[] data = ms.ToArray();// fs.Write(data, 0, data.Length);// fs.Flush();// }//}#endregion//用数据流的方式导出//string path = folder + name + ".xlsx";//ExcelUtil.ExportT oExcel(dsResult.Tables[0], path);//用EPPlus.dll导出Excel(xlsx)string path = folder + name + ".xlsx";ExcelExport.ExportByEPPlus(table,dsResult.Tables[0], path);using System.Data;using System.IO;using erModel;using erModel;using erModel;using NPOI;using NPOI.HPSF;using NPOI.HSSF;using NPOI.HSSF.Util;using NPOI.POIFS;using NPOI.SS.Formula.Eval;using NPOI.Util;using NPOI.SS;using NPOI.DDF;using NPOI.SS.Util;using System.Collections;using System.Text.RegularExpressions;using NPOI.XSSF;using System.Text;using OfficeOpenXml;using OfficeOpenXml.Style;namespace Cis.DRGsSystem.Dal{/// <summary>/// 用NPOI插件导出Excel,如果数据量过大则抛内存溢出错误,改用数据流的方式导出Excel/// </summary>public static class Util{/// <summary>/// 拆分字符串1,2,3,4,5/// </summary>/// <param name="strid">1,2,3,4,5</param>/// <returns></returns>public static string StrArr(this string strid){string StrValue = "";if (!string.IsNullOrEmpty(strid)){string[] strarr = strid.Split(',');foreach (string item in strarr){StrValue += "'" + item.Trim() + "',";}StrValue = StrValue.Substring(0, StrValue.Length - 1);}return StrValue;}#region DataSet导出到Excel/// <summary>/// DataSet导出到Excel的MemoryStream/// </summary>/// <param name="dtSource">源DataSet</param> public static MemoryStream DataSetToExcel(DataSet ds) {XSSFWorkbook workbook = new XSSFWorkbook();for (int k = 0; k < ds.Tables.Count; k++){// HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet();XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet(ds.Tables[k].TableName.ToStr ing());#region 右击文件属性信息{DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();pany = "NPOI";// workbook.DocumentSummaryInformation = dsi;SummaryInformation si = PropertySetFactory.CreateSummaryInformation();si.Author = "文件作者信息"; //填加xls文件作者信息si.ApplicationName = "创建程序信息"; //填加xls文件创建程序信息stAuthor = "最后保存者信息"; //填加xls文件最后保存者信息ments = "作者信息"; //填加xls文件作者信息si.Title = "标题信息"; //填加xls文件标题信息si.Subject = "主题信息";//填加文件主题信息si.CreateDateTime = System.DateTime.Now;}#endregionXSSFCellStyle dateStyle = (XSSFCellStyle)workbook.CreateCellStyle();XSSFDataFormat format = (XSSFDataFormat)workbook.CreateDataFormat();dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");//取得列宽int rowIndex = 0;foreach (DataRow row in ds.Tables[k].Rows){#region 新建表,填充表头,填充列头,样式if (rowIndex == 0){#region 列头及样式{XSSFRow headerRow = (XSSFRow)sheet.CreateRow(0);XSSFCellStyle headStyle = (XSSFCellStyle)workbook.CreateCellStyle();//headStyle.Alignment = CellHorizontalAlignment.CENTER;XSSFFont font = (XSSFFont)workbook.CreateFont();font.FontHeightInPoints = 10;font.Boldweight = 700;headStyle.SetFont(font);foreach (DataColumn column in ds.T ables[k].Columns){headerRow.CreateCell(column.Ordinal).SetCellValue(column. ColumnName);headerRow.GetCell(column.Ordinal).CellStyle = headStyle;//设置列宽//sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + 1) * 256);}}#endregionrowIndex = 1;}#endregion#region 填充内容XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);foreach (DataColumn column in ds.T ables[k].Columns){XSSFCell newCell = (XSSFCell)dataRow.CreateCell(column.Ordinal);newCell.SetCellType(CellType.String);string drValue = row[column].ToString();switch (column.DataType.ToString()){case "System.String"://字符串类型newCell.SetCellValue(drValue);break;case "System.DateTime"://日期类型System.DateTime dateV;System.DateTime.TryParse(drValue, out dateV);newCell.SetCellValue(dateV);newCell.CellStyle = dateStyle;//格式化显示break;case "System.Boolean"://布尔型bool boolV = false;bool.TryParse(drValue, out boolV); newCell.SetCellValue(boolV); break;case "System.Int16"://整型case "System.Int32":case "System.Int64":case "System.Byte":int intV = 0;int.TryParse(drValue, out intV); newCell.SetCellValue(intV); break;case "System.Decimal"://浮点型case "System.Double":double doubV = 0;double.TryParse(drValue, out doubV); newCell.SetCellValue(doubV); break;case "System.DBNull"://空值处理newCell.SetCellValue("");break;default:newCell.SetCellValue("");break;}}#endregionrowIndex++;}}using (MemoryStream ms = new MemoryStream()){workbook.Write(ms);ms.Flush();return ms;}}#endregion}/// <summary>/// 用数据流方式导出Excel/// </summary>public class ExcelUtil{/// <summary>/// 导出文件,使用文件流。
DataTable导出Excel的三种方式
DataTable导出Excel的三种方式新加一种,使用使用NPOI导入导出标准Excel一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:复制代码2 public static bool ExportExcel(System.Data.DataTable dt, string path)3 {4 bool succeed = false;5 if (dt != null)6 {7 Microsoft.Office.Interop.Excel.Application xlApp = null;8 try9 {10 xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();11 }12 catch (Exception ex)13 {14 throw ex;15 }1617 if (xlApp != null)18 {19 try20 {21 Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);22 object oMissing = System.Reflection.Missing.Value;23 Microsoft.Office.Interop.Excel.Worksheet xlSheet = null;2425 xlSheet = (Worksheet)xlBook.Worksheets[1];26 = dt.TableName;2728 int rowIndex = 1;29 int colIndex = 1;30 int colCount = dt.Columns.Count;31 int rowCount = dt.Rows.Count;3233 //列名的处理34 for (int i = 0; i < colCount; i++)35 {36 xlSheet.Cells[rowIndex, colIndex] = dt.Columns[i].ColumnName;37 colIndex++;38 }39 //列名加粗显示40 xlSheet.get_Range(xlSheet.Cells[rowIndex, 1], xlSheet.Cells[rowIndex, colCount]).Font.Bold = true;41 xlSheet.get_Range(xlSheet.Cells[rowIndex, 1], xlSheet.Cells[rowCount + 1, colCount]) = "Arial";42 xlSheet.get_Range(xlSheet.Cells[rowIndex, 1], xlSheet.Cells[rowCount + 1, colCount]).Font.Size = "10";43 rowIndex++;4445 for (int i = 0; i < rowCount; i++)46 {47 colIndex = 1;48 for (int j = 0; j < colCount; j++)49 {50 xlSheet.Cells[rowIndex, colIndex] = dt.Rows[i][j].ToString();51 colIndex++;52 }53 rowIndex++;54 }55 xlSheet.Cells.EntireColumn.AutoFit();5657 xlApp.DisplayAlerts = false;58 path = Path.GetFullPath(path);59 xlBook.SaveCopyAs(path);60 xlBook.Close(false, null, null);61 xlApp.Workbooks.Close();62 Marshal.ReleaseComObject(xlSheet);63 Marshal.ReleaseComObject(xlBook);64 xlBook = null;65 succeed = true;66 }67 catch (Exception ex)68 {69 succeed = false;70 }71 finally72 {73 xlApp.Quit();74 Marshal.ReleaseComObject(xlApp);75 int generation = System.GC.GetGeneration(xlApp);76 xlApp = null;77 System.GC.Collect(generation);78 }79 }80 }81 return succeed;82 }复制代码二、使用Aspose.Cells.dllAspose.Cells 是Aspose公司推出的导出Excel的控件,不依赖Office,商业软件,网上有破解(下载见附件)。
asp中把数据导出为excel的2种方法
asp中把数据导出为excel的2种⽅法我们在做项⽬的时候经常要将数据库的数据导出到excel中,很多asp⽤户并不知道怎么写。
这⾥明凯总结了两种⽅法来导出excel,希望能帮到⼤家。
⽅法⼀:⽤excel组件< %set rs=server.createobject("adodb.recordset")sql="select * from mkusers"rs.open sql,objconn,1,1Set ExcelApp =CreateObject("Excel.Application")ExcelApp.Application.Visible = TrueSet ExcelBook = ExcelApp.Workbooks.AddExcelBook.WorkSheets(1).cells(1,1).value ="⽤户表"ExcelBook.WorkSheets(1).cells(2,1).value = "⽤户编号"ExcelBook.WorkSheets(1).cells(2,2).value = "登陆名"ExcelBook.WorkSheets(1).cells(2,3).value = "真实姓名"ExcelBook.WorkSheets(1).cells(2,4).value = "密码"cnt =3do while not rs.eofExcelBook.WorkSheets(1).cells(cnt,1).value = rs("provinceid")ExcelBook.WorkSheets(1).cells(cnt,2).value = rs("province")ExcelBook.WorkSheets(1).cells(cnt,3).value = rs("flag")ExcelBook.WorkSheets(1).cells(cnt,4).value = rs("id")rs.movenextcnt = cint(cnt) + 1loopExcelbook.SaveAs "d:\yourfile.xls" '这个是数据导出完毕以后在D盘存成⽂件ExcelApp.Application.Quit '导出以后退出ExcelSet ExcelApp = Nothing '注销Excel对象%>< %set rs=server.createobject("adodb.recordset")sql="select * from mkusers"rs.open sql,objconn,1,1Set ExcelApp =CreateObject("Excel.Application")ExcelApp.Application.Visible = TrueSet ExcelBook = ExcelApp.Workbooks.AddExcelBook.WorkSheets(1).cells(1,1).value ="⽤户表"ExcelBook.WorkSheets(1).cells(2,1).value = "⽤户编号"ExcelBook.WorkSheets(1).cells(2,2).value = "登陆名"ExcelBook.WorkSheets(1).cells(2,3).value = "真实姓名"ExcelBook.WorkSheets(1).cells(2,4).value = "密码"cnt =3do while not rs.eofExcelBook.WorkSheets(1).cells(cnt,1).value = rs("provinceid")ExcelBook.WorkSheets(1).cells(cnt,2).value = rs("province")ExcelBook.WorkSheets(1).cells(cnt,3).value = rs("flag")ExcelBook.WorkSheets(1).cells(cnt,4).value = rs("id")rs.movenextcnt = cint(cnt) + 1loopExcelbook.SaveAs "d:\yourfile.xls" '这个是数据导出完毕以后在D盘存成⽂件ExcelApp.Application.Quit '导出以后退出ExcelSet ExcelApp = Nothing '注销Excel对象%>⽅法⼆:使⽤⽂件组件< %dim s,sql,filename,fs,myfile,xSet fs = server.CreateObject("scripting.filesystemobject")'--假设你想让⽣成的EXCEL⽂件做如下的存放filename = Server.MapPath("order.xls")'--如果原来的EXCEL⽂件存在的话删除它if fs.FileExists(filename) thenfs.DeleteFile(filename)end if'--创建EXCEL⽂件set myfile = fs.CreateTextFile(filename,true)StartTime = Request("StartTime")EndTime = Request("EndTime")StartEndTime = "AddTime between #"& StartTime &" 00:00:00# and #"& EndTime &" 23:59:59#"strSql = "select * from mksuers "Set rstData =conn.execute(strSql)if not rstData.EOF and not rstData.BOF thendim trLine,responsestrstrLine=""For each x in rstData.fieldsstrLine = strLine & & chr(9)Next'--将表的列名先写⼊EXCELmyfile.writeline strLineDo while Not rstData.EOFstrLine=""for each x in rstData.FieldsstrLine = strLine & x.value & chr(9)nextmyfile.writeline strLinerstData.MoveNextloopend ifResponse.Write "⽣成EXCEL⽂件成功,点击<a href="/" rel="external nofollow" order.xls"" target=""_blank"">下载!"rstData.Closeset rstData = nothingConn.CloseSet Conn = nothing%>可以看出,第⼀种⽅法是直接导出的是excel⽂件,⽽第⼆张⽅法是到处的是⽂本⽂件,只不过后缀名改成了xls。
软件开发-.NET使用Aspose.Cells导入导出Excel文件-嘉为科技
【摘要】在.NET软件开发项目中,开发人员经常会碰到Excel导入导出的需求,而传统的使用Microsoft.Office.Interop 或者 Microsoft.ACE.OLEDB 都具有一些使用限制:●需要在服务器端装Excel或者Microsoft.ACE.OLEDB,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机。
●Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123。
●导出时,如果字段内容以“-”或“=”开头,Excel会把它当成公式进行,会报错。
●Excel会根据Excel文件前8行分析数据类型,如果正好你前8行某一列只是数字,那它会认为该列为数值型,自动将该列转变成类似1.42702E+17格式,日期列变成包含日期和数字的。
本文将介绍Excel导入导出的另一种方法:Aspose.Cells,它能克服Microsoft.Office.Interop 或者 Microsoft.ACE.OLEDB的这些缺点【正文】使用Aspose.CellsAspose.Cells是比一个比较好用的第三方类库,使用它导入导出Excel不需要服务器安装Excel软件。
利用Aspose.Cells导入Excel第一步:首先必须要下载Aspose.Cells.dll文件,然后在在项目中引用,不需安装。
第二步:在CS文件中添加引用。
using Aspose.Cells;●将用户选择的Excel文件导入到DataTable对象中if (!fileLoad.HasFile){ShowMessage("请选择要导入的Excel文件");return;}string ex = fileLoad.FileName.Split('.').Last();if (ex != "xlsx" && ex != "xls"){ShowMessage("模板必须是Excel文件,请下载正确的模板");return;}Workbook workbook = new Workbook(fileLoad.FileContent);Worksheet worksheet = workbook.Worksheets[0];Cells cells = worksheet.Cells;DataTable dt;dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1,cells.MaxDataColumn + 1, true);上面的代码是将用户选择的Excel文件的内容导入到DataTable,当然Aspose.Cells还提供将Excel的数据导入到GridView、DataView等等数据绑定控件并支持众多参数设置的方法。
ASP导出Excel数据的四种方法
ASP导出E xcel数据的四种方法什么是OWC?OWC是O ffice WebCompe nt的缩写,即Mic rosof t的Off ice W eb组件,它为在We b中绘制图形提供了灵活的同时也是最基本的机制。
在一个intr anet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE5和Off ice 2000),那么就有能力利用Of ficeWeb组件提供一个交互式图形开发环境。
这种模式下,客户端工作站将在整个任务中分担很大的比重。
<%Opti on Ex plici tCl ass E xcelG enP rivat e obj Sprea dshee tPr ivate iCol Offse tP rivat e iRo wOffs etS ub Cl ass_I nitia lize()Se t obj Sprea dshee t = S erver.Crea teObj ect("OWC.S pread sheet")i RowOf fset= 2 iColO ffset = 2EndSub SubClass_Term inate()S et ob jSpre adshe et =Nothi ng 'C leanupE nd Su bP ublic Prop ertyLet C olumn Offse t(iCo lOff)IfiColO ff >0 the niC olOff set = iCol Off ElseiCol Offse t = 2End If End P roper tyPubli c Pro perty LetRowOf fset(iRowO ff) If iR owOff> 0theniRow Offse t = i RowOf fEl sei RowOf fset= 2 End I fEn d Pro perty SubGener ateWo rkshe et(ob jRS)'Pop ulate s the Exce l wor kshee t bas ed on a Re cords et'sconte nts 'Star t bydispl aying thetitle sIf objR S.EOF then Exit SubDimobjFi eld,iCol, iRowiCo l = i ColOf fsetiRow = iR owOff set For E ach o bjFie ld in objR S.Fie lds objSp reads heet.Cells(iRow, iCo l).Va lue = objF ield.NameobjS pread sheet.Colu mns(i Col).AutoF itCol umns'设置E xcel表里的字体objS pread sheet.Cell s(iRo w, iC ol).F ont.B old = Trueobj Sprea dshee t.Cel ls(iR ow, i Col).Font.Itali c = F alseobjS pread sheet.Cell s(iRo w, iC ol).F ont.S ize = 10 objSp reads heet.Cells(iRow, iCo l).Ha lignm ent = 2 '居中iC ol =iCol+ 1 Next'objF ield'Dis playall o f the dataDoWhile NotobjRS.EOFiRow = iR ow +1iC ol =iColO ffsetFor Each objF ieldin ob jRS.F ieldsIfIsNul l(obj Field.Valu e) th eno bjSpr eadsh eet.C ells(iRow, iCol).Val ue =""E lse objSp reads heet.Cells(iRow, iCo l).Va lue = objF ield.Valueobj Sprea dshee t.Col umns(iCol).Auto FitCo lumnsobj Sprea dshee t.Cel ls(iR ow, i Col).Font.Bold= Fal seo bjSpr eadsh eet.C ells(iRow, iCol).Fon t.Ita lic = Fals eob jSpre adshe et.Ce lls(i Row,iCol).Font.Size = 10End If iCol= iCo l + 1Nex t 'ob jFiel dob jRS.M oveNe xtL oop End S ub Fu nctio n Sav eWork sheet(strF ileNa me) 'Sav e the work sheet to a spec ified file nameOn E rrorResum e Nex tCa ll ob jSpre adshe et.Ac tiveS heet.Expor t(str FileN ame,0)S aveWo rkshe et =(Err.Numbe r = 0)En d Fun ctionEnd Clas sD im ob jRS Set o bjRS= Ser ver.C reate Objec t("AD ODB.R ecord set")obj RS.Op en "S ELECT * FR OM xx xx","Prov ider=SQLOL EDB.1;Pers ist S ecuri ty Info=True;UserID=xx xx;Pa sswor d=xxx x;Ini tialCatal og=xx xx;Da ta so urce=xxxx;" Di m Sav eNameSav eName = Re quest.Cook ies("saven ame")("nam e") Dim o bjExc elD im Ex celPa thE xcelP ath = "Exc el\"& Sav eName & ".xls"SetobjEx cel = NewExcel Gen objEx cel.R owOff set = 1o bjExc el.Co lumnO ffset = 1objE xcel.Gener ateWo rkshe et(ob jRS)If o bjExc el.Sa veWor kshee t(Ser ver.M apPat h(Exc elPat h)) t hen 'Resp onse.Write "<ht ml><b ody b gcolo r='ga insbo ro' t ext='#000000'>已保存为Ex cel 文件.<a hre f='"& ser ver.U RLEnc ode(E xcelP ath)& "'>下载</a>"E lse Respo nse.W rite"在保存过程中有错误!"E nd IfSet objE xcel= Not hingobjR S.Clo seS et ob jRS = Noth ing %>二、用Excel的Appl icati on组件在客户端导出到Exce l或Wor d注意:两个函数中的“d ata“是网页中要导出的tab le的i d<i nputtype="hidd en" n ame="out_w ord"oncli ck="v bscri pt:bu ildDo c" va lue="导出到wo rd" c lass="notP rint"><i nputtype="hidd en" n ame="out_e xcel" oncl ick="Autom ateEx cel();" va lue="导出到ex cel"class="not Print">导出到Exce l代码<SCRI PT LA NGUAG E="ja vascr ipt"><!--fu nctio n Aut omate Excel(){//Start Exce l and getAppli catio n obj ect.varoXL = newActiv eXObj ect("Excel.Appl icati on");//Get a newworkb ook.varoWB = oXL.Workb ooks.Add();va r oSh eet = oWB.Activ eShee t;v ar ta ble = docu ment.all.d ata;varhang= tab le.ro ws.le ngth;va r lie = ta ble.r ows(0).cel ls.le ngth;// Addtable head ers g oingcellby ce ll. for (i=0;i<hang;i++){ for (j=0;j<lie;j++)o Sheet.Cell s(i+1,j+1).valu e = t able.rows(i).ce lls(j).inn erTex t;}}oXL.Visib le =true;oXer Contr ol =true;} //--></S CRIPT>导出到Word代码<s cript lang uage="vbsc ript">Su b bui ldDocset tabl e = d ocume nt.al l.dat aro w = t able.rows.lengt hco lumn= tab le.ro ws(1).cell s.len gth SetobjWo rdDoc = Cr eateO bject("Wor d.Doc ument")objWo rdDoc.Appl icati on.Do cumen ts.Ad d the Templ ate,Falseobj WordD oc.Ap plica tion.Visib le=Tr ueDim t heArr ay(20,10000)f or i=0 torow-1for j=0to co lumn-1th eArra y(j+1,i+1) = ta ble.r ows(i).cel ls(j).inne rTEXTnex tne xto bjWor dDoc.Appli catio n.Act iveDo cumen t.Par agrap hs.Ad d.Ran ge.In sertB efore("综合查询结果集") //显示表格标题ob jWord Doc.A pplic ation.Acti veDoc ument.Para graph s.Add.Rang e.Ins ertBe fore("") Set r ngPar a = o bjWor dDoc.Appli catio n.Act iveDo cumen t.Par agrap hs(1).Rang eWi th rn gPara.Bo ld =True//将标题设为粗体.Par agrap hForm at.Al ignme nt =1 //将标题居中.Fon t.Nam e = "隶书" //设定标题字体.Font.Size= 18//设定标题字体大小End WithSet rngC urren t = o bjWor dDoc.Appli catio n.Act iveDo cumen t.Par agrap hs(3).Rang eSe t tab Curre nt =ObjWo rdDoc.Appl icati on.Ac tiveD ocume nt.Ta bles.Add(r ngCur rent,row,c olumn)f or i= 1 t o col umn objW ordDo c.App licat ion.A ctive Docum ent.T ables(1).R ows(1).Cel ls(i).Rang e.Ins ertAf ter theArr ay(i,1)o bjWor dDoc.Appli catio n.Act iveDo cumen t.Tab les(1).Row s(1).Cells(i).R ange.Parag raphF ormat.alig nment=1n ext For i =1 t o col umn For j = 2to ro wob jWord Doc.A pplic ation.Acti veDoc ument.Tabl es(1).Rows(j).C ells(i).Ra nge.I nsert After theA rray(i,j)objW ordDo c.App licat ion.A ctive Docum ent.T ables(1).R ows(j).Cel ls(i).Rang e.Par agrap hF orm at.al ignme nt=1NextNex tE nd Su b</SCRIP T>三、直接在IE中打开,再存为EXCEL文件把读出的数据用<t able>格式,在网页中显示出来,同时,加上下一句即可把EX CEL表在客客户端显示。
asp.net 将DataTable中的数据导出到Excel并下载方法
将DataTable中的数据导出到Excel并下载方法我上一篇文章介绍了Excel导入到DataTable的方法,总觉得少些什么,这篇我就将DataTable中的数据导出到Excel并提供下载的方法记录下来。
调用如下:CreateExcel(dtexcel, "application/ms-excel", excel);方法如下:/// <summary>/// DataTable中的数据导出到Excel并下载/// </summary>/// <param name="dt">要导出的DataTable</param>/// <param name="FileType">类型</param>/// <param name="FileName">Excel的文件名</param>public void CreateExcel(DataTable dt, string FileType, string FileName){Response.Clear();Response.Charset = "UTF-8";Response.Buffer = true;Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");Response.AppendHeader("Content-Disposition", "attachment;filename=\"" +System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\"");Response.ContentType = FileType;string colHeaders = string.Empty;string ls_item = string.Empty;DataRow[] myRow = dt.Select();int i = 0;int cl = dt.Columns.Count;foreach (DataRow row in myRow){for (i = 0; i < cl; i++){if (i == (cl - 1)){ls_item += row[i].ToString() + "\n";}else{ls_item += row[i].ToString() + "\t";}}Response.Output.Write(ls_item);ls_item = string.Empty;}Response.Output.Flush();Response.End();}将Excel中某个工作簿的数据导入到DataTable方法最近在网上看了几篇将Excel中某个工作簿的数据导入到DataTable的文章,自己总结了一套最实用的方法。
C#使用Aspose.Cells导出excel
C#使⽤Aspose.Cells导出excelC# winform导出excel可以使⽤ Microsoft.Office.Interop.Excel.dll或者Aspose.Cells.dll以及其他⽅法。
Microsoft.Office.Interop.Excel.dll导出速度慢,不适⽤于数据量⼤情况。
Aspose.Cells.dll到处速度很快。
由于Aspose.Cells.dll本⾝收费,所以需要加载破解证书。
Aspose.Cells简介:Aspose.Cells是⼀款功能强⼤的Excel⽂档处理和转换控件,开发⼈员和客户电脑⽆需安装Microsoft Excel也能在应⽤程序中实现类似Excel的强⼤数据管理功能,⽀持所有Excel格式类型的操作,在没有Microsoft Excel的环境下,⽤户也可为其应⽤程序嵌⼊类似Excel的强⼤数据管理功能。
C#中winform使⽤spose.Cells导出excel的⽅法:1.下载aspose.Cells.dll以及破解证书:2.引⽤右键添加引⽤,点击浏览,找到下载的dll⽂件(最好复制到⼯程⽬录),选择Aspose.Cells引⽤3.⼯程右键添加⽂件夹ASPOSE,并右键添加“现有项”aspose.Cells.dll以及破解证书。
分别右键aspose.Cells.dll以及license.lic选择属性,始终复制到输出⽬录。
4.添加usingusing Aspose.Cells;新建DataTableDataTable dt1 = new DataTable();初始化表头:dt1.Columns.Add(new DataColumn("表头1", typeof(string)));dt1.Columns.Add(new DataColumn("表头2", typeof(string)));dt1.Columns.Add(new DataColumn("表头3", typeof(string)));dt1.Columns.Add(new DataColumn("表头4", typeof(string)));添加数据(可以放到循环体)DataRow rowData = dt1.NewRow();rowData["表头1"] = "1"rowData["表头2"] = "2";rowData["表头3"] = "3";rowData["表头4"] = "4";dt1.Rows.Add(rowData);//新增⼀⾏数据将DataTabel写⼊excelExportExcelWithAspose(dt1, "D:\\设备数据.xlsx");函数实现:public static bool ExportExcelWithAspose(System.Data.DataTable data, string filepath){try{if (data == null){MessageBox.Show("数据为空");return false;}Aspose.Cells.License li = new Aspose.Cells.License();li.SetLicense("ASPOSE/License.lic");//破解证书Workbook book = new Workbook(); //创建⼯作簿Worksheet sheet = book.Worksheets[0]; //创建⼯作表Cells cells = sheet.Cells; //单元格//创建样式Aspose.Cells.Style style = book.Styles[book.Styles.Add()];style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应⽤边界线左边界线style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应⽤边界线右边界线 style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应⽤边界线上边界线style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应⽤边界线下边界线 style.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的⽔平对齐⽅式⽂字居中 = "宋体"; //字体//style1.Font.IsBold = true; //设置粗体style.Font.Size = 11; //设置字体⼤⼩//style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景⾊//style.Pattern = Aspose.Cells.BackgroundType.Solid;int Colnum = data.Columns.Count;//表格列数int Rownum = data.Rows.Count;//表格⾏数//⽣成⾏列名⾏for (int i = 0; i < Colnum; i++){cells[0, i].PutValue(data.Columns[i].ColumnName); //添加表头cells[0, i].SetStyle(style); //添加样式}//⽣成数据⾏for (int i = 0; i < Rownum; i++){for (int k = 0; k < Colnum; k++){cells[1 + i, k].PutValue(data.Rows[i][k].ToString()); //添加数据cells[1 + i, k].SetStyle(style); //添加样式}}sheet.AutoFitColumns(); //⾃适应宽book.Save(filepath); //保存MessageBox.Show("Excel成功保存到D盘");GC.Collect();}catch (Exception e){return false;}return true;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
ASP导出为Word或Excel的最简单方法
ASP导出为Word或Excel的最简单方法2010-09-04 15:05方法1:把一个Word文档另存为XML格式(可能需要Office2003才能支持),然后你就可以用操作XML文件的方法,来对这个文件中指定的文字替换成你需要的内容。
重新打开这个文件,你会发现它是在Word中打开的,这样可以用Word来继续编辑或者打印。
方法2:我在做一项目时,客户要求要将从数据库中获取数据后的ASP页面导出成EXCEL或WORD文档。
经本人试验后找出了最简单的方法:在ASP文件的最开头位置加入下面的代码就可以了,非常简单。
Asp代码1.EXCEL2.<%3.Response.ContentType ="application/vnd.ms-excel"4.Response.AddHeader "Content-Disposition", "attachment; filename=红宝网络表格.xls"5.%>6.7.WORD8.<%9.Response.ContentType ="application/vnd.ms-word"10.Response.AddHeader "Content-Disposition", "attachment; filename=红宝网络文档.doc"11.%>导出为WORD时,若文档中含有表格,需要打打印,则要在导出的页面中加入下面的样式。
Css代码1.<style type="text/css">2.<!--3.table{4.border-collapse:collapse;border:none;mso-border-alt:solidwindowtext .5pt;5.mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm5.4pt;mso-border-insideh:6..5pt solid windowtext;mso-border-insidev:.5pt solidwindowtext;border-left:solid windowtext 1.0pt;border-top:solid windowtext 1.0pt;7.}8.td{9.border-top:none;border-left:10.none;border-bottom:solid windowtext 1.0pt;border-right:solidwindowtext 1.0pt;11.mso-border-top-alt:solidwindowtext .5pt;mso-border-left-alt:solid windowtext .5pt;12.mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm5.4pt;13.}14.-->15.</style>我打字系统项目中的一个导出为EXCEL文件的实例代码如下:Asp代码1.<!--#include file="hbwlConfig.asp" -->2.<%Response.ContentType ="application/vnd.ms-excel"3.Response.AddHeader "Content-Disposition", "attachment;filename=chengji.xls"%>4.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">5.<html xmlns="/1999/xhtml">6.<head>7.<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />8.<title>打字成绩</title>9.<style type="text/css">10..tableWg {border:1px solid #9bbde6;}11..tableWg tr{text-align:center;}12..tableWg td{ border-bottom:1px dotted #9bbde6; border-right:1pxdotted #9bbde6;}13.</style>14.</head>15.<body>16.<%sql=session("chengjisql")17.response.Write hbwl.dbSelect(sql,0,1,"",0,"",0,"tableWg")%>18.</body>19.</html>20.<%set hbwl=nothing%>文章来源:季长旭博客鹿胎膏。
C#使用Aspose.Cells导出Excel简单实现
C#使⽤Aspose.Cells导出Excel简单实现将DataTable导出Xlsx格式的⽂件下载(⽹页输出):1///<summary>2///导出Excel表格3///</summary>4///<param name="list">数据集合</param>5///<param name="header">数据表头</param>6///<returns></returns>7public void ExportExcel(DataTable dt, string[] header)8 {9 Workbook wb = new Workbook(FileFormatType.Xlsx);10try11 {12 Worksheet sheet = wb.Worksheets[0];13 = "MO上⾏查询结果";14if (dt.Rows.Count <= 0)15 {16 System.Web.HttpContext.Current.Response.Write("<script>alert('没有检测到需要导出数据!');</script>");17return;18 }19// 为单元格添加样式20 Aspose.Cells.Style style = wb.CreateStyle();21 style.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center; //设置居中22 style.Font.Size = 12;//⽂字⼤⼩23 style.Font.IsBold = true;//粗体24 style.HorizontalAlignment = TextAlignmentType.Center;//⽂字居中2526int rowIndex = 0;27for (int i = 0; i < header.Length; i++)28 {29 sheet.Cells[rowIndex, i].PutValue(header[i]);30 sheet.Cells[rowIndex, i].SetStyle(style);31 sheet.Cells.SetColumnWidth(i, 20);//设置宽度32 }33for (int i = 0; i < dt.Rows.Count; i++)//遍历DataTable⾏34 {35 sheet.Cells[i + 1, 0].PutValue(dt.Rows[i]["SENDER"].ToString());36 sheet.Cells[i + 1, 1].PutValue(dt.Rows[i]["SENDCONTENT"].ToString());37 sheet.Cells[i + 1, 2].PutValue("");38 sheet.Cells[i + 1, 3].PutValue(dt.Rows[i]["RECDATE"].ToString());39 sheet.Cells[i + 1, 4].PutValue(dt.Rows[i]["sn"].ToString());40 }41 }42catch (Exception e)43 {44 System.Web.HttpContext.Current.Response.Write("<script>alert('导出异常:" + e.Message + "!');</script>");45 }46#region输出到Excel47using (MemoryStream ms = new MemoryStream())48 {4950 wb.Save(ms, new OoxmlSaveOptions(SaveFormat.Xlsx));//默认⽀持xls版,需要修改指定版本51 System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xlsx", DateTime.Now.ToString("yyyyMMddHHmmssfff")));52 System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";53 System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray());54 wb = null;55 System.Web.HttpContext.Current.Response.End();56 }57#endregion58 }其它相关参考:。
利用Aspose.Cells和Excel模板导出统计数据
利⽤Aspose.Cells和Excel模板导出统计数据在项⽬中要进⾏导出Excel报表给客户,⾥⾯有统计,就⼼思⽤Aspose.Cells 配合实体类数据直接导出。
结果呢⽐较⿇烦。
然后就检索找到利⽤Excel模板配合实体类数据导出。
总的来说⼀般的报表⽣成,基本上是基于以下⼏种⽅式:⼀种是基于微软Excel内置的引擎来实现;⼀种是构造HTML格式的Excle报表;⼀种是基于控件的⽅式来处理,基于控件有很多种⽅式,个⼈认为⽐较有名的是Aspose.Cell和NPOI,下⾯⽤到的是Aspose.Cell效果图:Excel模板及相关变量报表1模板如下所⽰(其中通过引⽤集合的对象是通过&=来引⽤,对象的属性或者列名,通过如&=Export.作业完成计划⽅式引⽤,⾮常直观⽅便)Aspose.Cell控件⽀持多种参数变量的绑定操作,如⽀持DataSet、Datatable、IList集合,实体类集合、类对象等。
下⾯我主要⽤List 实体类集合protected void ExportExcel_ServerClick(object sender, EventArgs e){HttpCookie getCookies = Request.Cookies["UserLogin"];if (getCookies != null){string[] strParm = hfExcelData.Value.Split(',');List<jianpinorzhen_view> getJianPinOrZhenData = SearchExportData.LstSearchExportJianPinOrZhen(Server.UrlDecode(getCookies["SqlConString"]), getCookies["CustomCode"],getCookies["CustomType"],strParm[0], strParm[1], strParm[2], strParm[3], strParm[4]);//创建⼀个workbookdesigner对象WorkbookDesigner designer = new WorkbookDesigner();//制定报表模板switch (strParm[4]){case "⼯⼚⼊货箱单信息":designer.Open(Server.MapPath(@"model\AllWarehousing.xls"));break;case "上货开箱信息":designer.Open(Server.MapPath(@"model\Warehousing.xls"));break;case "检品之后信息":designer.Open(Server.MapPath(@"model\Dress_Jp.xls"));break;case "检针之后信息":designer.Open(Server.MapPath(@"model\Dress_Jz.xls"));break;default:break;}//设置实体类对象<span style="color:#FF0000;">这⾥设置了Export 变量,然后在模板⾥⾯我们就⽤了。