『壹』 .net 导入excel
三种经典方法:1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:public DataSet ExcelToDS(string Path){ 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 [sheet1$]"; myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds,"table1"); return ds;}对于EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null); string tableName=schemaTable.Rows[0][2].ToString().Trim(); 另外:也可进行写入EXCEL文件,实例如下:public void DSToExcel(string Path,DataSet oldds){ //先得到汇总EXCEL的DataSet 主要目的是获得EXCEL在DataSet中的结构 string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ="+path1+";Extended Properties=Excel 8.0" ; OleDbConnection myConn = new OleDbConnection(strCon) ; string strCom="select * from [Sheet1$]"; myConn.Open ( ) ; OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom, myConn ) ; ystem.Data.OleDb.OleDbCommandBuilder builder=new OleDbCommandBuilder(myCommand); //QuotePrefix和QuoteSuffix主要是对builder生成InsertComment命令时使用。 builder.QuotePrefix="["; //获取insert语句中保留字符(起始位置) builder.QuoteSuffix="]"; //获取insert语句中保留字符(结束位置) DataSet newds=new DataSet(); myCommand.Fill(newds ,"Table1") ; for(int i=0;i<oldds.Tables[0].Rows.Count;i++) { //在这里不能使用ImportRow方法将一行导入到news中,因为ImportRow将保留原来DataRow的所有设置(DataRowState状态不变)。 在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的DataRowState!=Added DataRow nrow=aDataSet.Tables["Table1"].NewRow(); for(int j=0;j<newds.Tables[0].Columns.Count;j++) { nrow[j]=oldds.Tables[0].Rows[i][j]; } newds.Tables["Table1"].Rows.Add(nrow); } myCommand.Update(newds,"Table1"); myConn.Close();}2.方法二:引用的com组件:Microsoft.Office.Interop.Excel.dll 读取EXCEL文件 首先是Excel.dll的获取,将Office安装目录下的Excel.exe文件Copy到DotNet的bin目录下,cmd到该目录下,运行 TlbImp EXCEL.EXE Excel.dll 得到Dll文件。 点击此处下载此文件:/Files/songliang/DLL文件.rar 再在项目中添加引用该dll文件. //读取EXCEL的方法 (用范围区域读取数据) private void OpenExcel(string strFileName) { object missing = System.Reflection.Missing.Value; Application excel = new Application();//lauch excel application if (excel == null) { Response.Write("<script>alert('Can't access excel')</script>"); } else { excel.Visible = false; excel.UserControl = true; // 以只读的形式打开EXCEL文件 Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing, missing, missing, missing, true, missing, missing, missing, missing, missing); //取得第一个工作薄 Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1); //取得总记录行数 (包括标题列) int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数 //int columnsint = mySheet.UsedRange.Cells.Columns.Count;//得到列数 //取得数据范围区域 (不包括标题列) Range rng1 = ws.Cells.get_Range("B2", "B" + rowsint); //item Range rng2 = ws.Cells.get_Range("K2", "K" + rowsint); //Customer object[,] arryItem= (object[,])rng1.Value2; //get range's value object[,] arryCus = (object[,])rng2.Value2; //将新值赋给一个数组 string[,] arry = new string[rowsint-1, 2]; for (int i = 1; i <= rowsint-1; i++) { //Item_Code列 arry[i – 1, 0] =arryItem[i, 1].ToString(); //Customer_Name列 arry[i – 1, 1] = arryCus[i, 1].ToString(); } Response.Write(arry[0, 0] + " / " + arry[0, 1] + "#" + arry[rowsint – 2, 0] + " / " + arry[rowsint – 2, 1]); } excel.Quit(); excel = null; Process[] procs = Process.GetProcessesByName("excel"); foreach (Process pro in procs) { pro.Kill();//没有更好的方法,只有杀掉进程 } GC.Collect(); }3.方法三:将EXCEL文件转化成CSV(逗号分隔)的文件,用文件流读取(等价就是读取一个txt文本文件)。 先引用命名空间:using System.Text;和using System.IO; FileStream fs = new FileStream("d:\\Customer.csv", FileMode.Open, FileAccess.Read, FileShare.None); StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding(936)); string str = ""; string s = Console.ReadLine(); while (str != null) { str = sr.ReadLine(); string[] xu = new String[2]; xu = str.Split(','); string ser = xu[0]; string dse = xu[1]; if (ser == s) { Console.WriteLine(dse);break; } } sr.Close(); 另外也可以将数据库数据导入到一个txt文件,实例如下: //txt文件名 string fn = DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + "PO014" + ".txt"; OleDbConnection con = new OleDbConnection(conStr); con.Open(); string sql = "select ITEM,REQD_DATE,QTY,PUR_FLG,PO_NUM from TSD_PO014"; //OleDbCommand mycom = new OleDbCommand("select * from TSD_PO014", mycon); //OleDbDataReader myreader = mycom.ExecuteReader(); //也可以用Reader读取数据 DataSet ds = new DataSet(); OleDbDataAdapter oda = new OleDbDataAdapter(sql, con); oda.Fill(ds, "PO014"); DataTable dt = ds.Tables[0]; FileStream fs = new FileStream(Server.MapPath("download/" + fn), FileMode.Create, FileAccess.ReadWrite); StreamWriter strmWriter = new StreamWriter(fs); //存入到文本文件中 //把标题写入.txt文件中 //for (int i = 0; i <dt.Columns.Count;i++) //{ // strmWriter.Write(dt.Columns[i].ColumnName + " "); //} foreach (DataRow dr in dt.Rows) { string str0, str1, str2, str3; string str = "|"; //数据用"|"分隔开 str0 = dr[0].ToString(); str1 = dr[1].ToString(); str2 = dr[2].ToString(); str3 = dr[3].ToString(); str4 = dr[4].ToString().Trim(); strmWriter.Write(str0); strmWriter.Write(str); strmWriter.Write(str1); strmWriter.Write(str); strmWriter.Write(str2); strmWriter.Write(str); strmWriter.Write(str3); strmWriter.WriteLine(); //换行 } strmWriter.Flush(); strmWriter.Close(); if (con.State == ConnectionState.Open) { con.Close(); }
『贰』 .net数据如何导出到EXCEL
public string DataTableToExcel(DataTable dt,string excelPath) { if(dt == null) { return "DataTable不能为空"; } int rows = dt.Rows.Count; int cols = dt.Columns.Count; StringBuilder sb; string connString; if(rows == 0) { return "没有数据"; } sb = new StringBuilder(); connString = string.Format(ConnectionString,excelPath); //生成创建表的脚本 sb.Append("CREATE TABLE "); sb.Append(dt.TableName + " ( "); for(int i=0;i<cols;i++) { if(i < cols – 1) sb.Append(string.Format("{0} varchar,",dt.Columns[i].ColumnName)); else sb.Append(string.Format("{0} varchar)",dt.Columns[i].ColumnName)); } using(OleDbConnection objConn = new OleDbConnection(connString)) { OleDbCommand objCmd = new OleDbCommand(); objCmd.Connection = objConn; objCmd.CommandText = sb.ToString(); try { objConn.Open(); objCmd.ExecuteNonQuery(); } catch(Exception e) { return "在Excel中创建表失败,错误信息:" + e.Message; } 生成插入数据脚本#region 生成插入数据脚本 sb.Remove(0,sb.Length); sb.Append("INSERT INTO "); sb.Append(dt.TableName + " ( "); for(int i=0;i<cols;i++) { if(i < cols – 1) sb.Append(dt.Columns[i].ColumnName + ","); else sb.Append(dt.Columns[i].ColumnName + ") values ("); } for(int i=0;i<cols;i++) { if(i < cols – 1) sb.Append("@" + dt.Columns[i].ColumnName + ","); else sb.Append("@" + dt.Columns[i].ColumnName + ")"); } #endregion//建立插入动作的Command objCmd.CommandText = sb.ToString(); OleDbParameterCollection param = objCmd.Parameters; for(int i=0;i<cols;i++) { param.Add(new OleDbParameter("@" + dt.Columns[i].ColumnName, OleDBType.VarChar)); } //遍历DataTable将数据插入新建的Excel文件中 foreach (DataRow row in dt.Rows) { for (int i=0; i<param.Count; i++) { param[i].Value = row[i]; } objCmd.ExecuteNonQuery(); } return "数据已成功导入Excel"; }//end using }在http://www.hackhome.com有!!!!!
『叁』 ASP.NET 数据导出到excel文件给客户端下载的几种方法麻烦告诉我
实现方法:SqlConnectionconn=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);SqlDataAdapterda=newSqlDataAdapter("select*fromtb1",conn);DataSetds=newDataSet();da.Fill(ds,"table1");DataTabledt=ds.Tables["table1"];stringname=System.Configuration.ConfigurationSettings.AppSettings["downloarl"].ToString()DateTime.Today.ToString("yyyyMMdd")newRandom(DateTime.Now.Millisecond).Next(10000).ToString()".csv";//存放到web.config中downloarl指定的路径,文件格式为当前日期4位随机数FileStreamfs=newFileStream(name,FileMode.Create,FileAccess.Write);StreamWritersw=newStreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));sw.WriteLine("自动编号,姓名,年龄");foreach(DataRowdrindt.Rows){sw.WriteLine(dr["ID"]","dr["vName"]","dr["iAge"]);}sw.Close();Response.AddHeader("Content-Disposition","attachment;filename="Server.UrlEncode(name));Response.ContentType="application/ms-excel";//指定返回的是一个不能被客户端读取的流,必须被下载Response.WriteFile(name);//把文件流发送到客户端Response.End();方法二:导出到csv文件,不存放到服务器,直接给浏览器输出文件流优点:1、随时生成,不需要占用资源2、可以结合身份认证3、同样利于数据交换实现方法:SqlConnectionconn=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);SqlDataAdapterda=newSqlDataAdapter("select*fromtb1",conn);DataSetds=newDataSet();da.Fill(ds,"table1");DataTabledt=ds.Tables["table1"];StringWritersw=newStringWriter();sw.WriteLine("自动编号,姓名,年龄");foreach(DataRowdrindt.Rows){sw.WriteLine(dr["ID"]","dr["vName"]","dr["iAge"]);}sw.Close();Response.AddHeader("Content-Disposition","attachment;filename=test.csv");Response.ContentType="application/ms-excel";Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");Response.Write(sw);Response.End();对方法一,二补充一点,如果你希望导出的是xls文件分隔符用\t就可以了,不要用逗号代码修改如下:sw.WriteLine("自动编号\t姓名\t年龄");foreach(DataRowdrindt.Rows){sw.WriteLine(dr["ID"]"\t"dr["vName"]"\t"dr["iAge"]);}另外,修改输出的文件扩展名为xls即可。方法三:从datagrid导出html代码,生成excel文件,给客户端下载优点:1、有固定的格式,样子好看(datagrid的样子)局限性:1、不适合数据交换,里面有html代码,比较乱,没有固定格式2、datagrid不能有分页、排序等,否则出错实现方法:Response.Clear();Response.Buffer=false;Response.Charset="GB2312";Response.AppendHeader("Content-Disposition","attachment;filename=test.xls");Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");Response.ContentType="application/ms-excel";this.EnableViewState=false;System.IO.StringWriteroStringWriter=newSystem.IO.StringWriter();System.Web.UI.HtmlTextWriteroHtmlTextWriter=newSystem.Web.UI.HtmlTextWriter(oStringWriter);this.DataGrid1.RenderControl(oHtmlTextWriter);Response.Write(oStringWriter.ToString());Response.End();在这里说明一点:有的网友反映代码出现“没有dr["id"]”之类的错误,这个代码是按照我的数据结构来写的,到时候相关的字段要换成你自己的才是。
『肆』 .net怎么把整个页面导出excel
导出表格是可以的,页面的话导出WORD可以
『伍』 vb.net 2008中怎样将数据导出到excel中
如何从web页面导入excel单元格数据、又如何把查询出来的数据放到web页面上显示成客户需要的图表?并且导出到excel中?有两种方案:1.用Excel自动化技术。引用Excel的类型库生成.Net的包装类。导入时采用页面放上传文件按钮的方法,在服务器端收到文件后,用excel自动化类打开excel文件,再学会VBA语法,书写大量的代码读取单元格,然后连接数据库保存。导出时,查询数据库,启动excel自动化对象,通过VBA语法填写单元格,保存成excel文件,再用Response.OutputStream输出到页面上,触发excel文件的下载保存框。缺点:容易在服务器端产生excel死进程,代码编写复杂、代码量大、还要掌握VBA语法,用户需要上传、下载操作有人会说,显示数据时可以用网页直接显示,不用导出成excel。其实也很麻烦:用网页显示复杂的报表格式,网页设计工作量大;如果客户要求导出excel,这个工作就省不了;如果客户要求打印、打印预览、页面设置,比起excel浏览器的打印就捉襟见肘了。2.用微软Office中间件——SOAOffice。(建议使用最新版的)用SOAOffice输出Excel,就不会再有上述烦恼。通过SOAOffice不仅能够动态填充excel,读取excel单元格,而且还能在浏览器里直接浏览excel、或者下载、另存。SOAOffice提供标准C#.Net组件,组件在服务器端不使用自动化调用,稳定支持大量web并发访问,这是用com调用无法实现的。组件的属性方法都比较简单,易于调用,你完全不用去掌握复杂的VBA调用。由于是纯.Net组件,所以服务器端不需安装office。 SOAOffice的excel组件SOAExcel含有Sheet、Cell等类似Excel的简化接口,调用简单。SOAExcel不但能能把数据库字段值动态填充到Excel单元格,还能把用户输入的单元格的值提出给开发者保存到数据库。SOAExcel能够在客户端浏览器的网页里通过SOAOffice直接显示生成的Excel,用户不必先下载再打开观看内容。举个导出excel的例子:SOAOfficeX.ExcelResponse SOAExcel = new SOAOfficeX.ExcelResponse(); SOAOfficeX.ExcelResSheet sheet1 = SOAExcel.openSheet("Sheet1"); // 打开一个Sheetsheet1.openCell("D"+String.valueOf(8+i)).setValue(rs.getString("Count")); //循环填充数据。SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl(response); SOACtrl.assign(SOAExcel); // 绑定数据// 打开模板并生成最终的excel报表 SOACtrl.webOpen("doc/test.xls", 1, UserName, "Excel.Sheet"); 上述代码不但动态填充生成excel,而且在网页里直接显示生成的Excel给终端用户,由于使用了1打开模式,Excel是只读显示的。读取excel单元格的代码也很简单:SOAOfficeX.ExcelRequest SOAExcel = new SOAOfficeX.ExcelRequest();SOAOfficeX.IExcelReqSheet sheetOrder = SOAExcel.OpenSheet("销售订单");SOAOfficeX.IExcelReqCell cell1;cell1 = sheetOrder.OpenCell("I5");//订单编码string sOrderNum = cell1.Value;//cell1.Value就是读取的结果
『陆』 求助.net导出下面excel的方法
我博客总结的.net导出Excel的几种方法:http://blog.csdn.net/gdjlc/article/details/5810311可以用其中的“Excel模板”或者“生成HTML”导出excel。“Excel模板”先在一个EXCEL中建立你这个需要的列,再在这个EXCEL中代码中写入数据。“生成HTML”就要对HMTL比较熟悉点,生成表格。
『柒』 asp.net中如何实现excel文档的转换
asp.net Excel导入和导出1、Excel数据导入到数据库中://该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径,sheetname为表示那个Excel表; public DataSet ExcelDataSource( string filepath , string sheetname ) …{ string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); OleDbDataAdapter oada = new OleDbDataAdapter ( "select * from [" + sheetname + "$]", strConn ); DataSet ds = new DataSet (); oada.Fill ( ds ); return ds ; }上面的代码实现了将Excel中的数据写进DataSet中,实现了这一步后,你可以按照自己的需要对获得DataSet进行处理,需要注意的一个问题是,你必须要指定sheetname,即Excel中的哪一个工作单需要导入,否则会出现错误。2、如何从Excel中获得工作单(sheetname)://获得Excel中的所有sheetname。public ArrayList ExcelSheetName ( string filepath )…{ ArrayList al = new ArrayList (); string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open (); DataTable sheetNames = conn.GetOleDbSchemaTable (System.Data.OleDb.OleDbSchemaGuid.Tables,new object[]…{null,null,null,"TABLE"}); conn.Close (); foreach ( DataRow dr in sheetNames.Rows ) …{ al.Add ( dr[2] ); } return al;}通过这两步,就基本可以实现将Excel导入到数据库中了,具体实现中的细节问题,你可以自己在实践中获得。3、将数据库中的数据导入Excel中,在这里我讲叙自己实践中的两个方法:方法一:从最基本的写文件入手,将从数据库中读出来的数据写入到Excel中;//该方法实现将数据导入到Excel文件中,其中的DataTable dt就是你需要将数据写入到Excel中的数据;public void ExportExcel( DataTable dt , StreamWriter w )…{ try …{ for( int i = 0 ; i < dt.Columns.Count ; i ++ ) …{ w.Write ( dt.Columns[i] ); w.Write( ' ' ); } w.Write ( " " ); object[] values = new object [dt.Columns.Count]; foreach ( DataRow dr in dt.Rows ) …{ values = dr.ItemArray ; for ( int i = 0 ; i < dt.Columns.Count ; i++ ) …{ w.Write ( values[i] ); w.Write ( ' ' ); } w.Write ( " " ); } w.Flush(); w.Close(); } catch …{ w.Close(); }}StreamWriter w就是你自己创建的一个流,创建该数据流时,你需要自己指定需要将数据写入到那个文件,即指定文件路径,要实现下载的话,就可以简单的用Response.Redirect ( "指定需要被下载的文件路径" );方法二:该方法实现的是将数据从DataGrid中导入到Excel中://filename为Excel的名字,ToExcelGrid就是数据源,在此为DataGrid数据源;private void ExportExcelFromDataGrid( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )…{ Response.Clear(); Response.Buffer= true; Response.Charset="utf-8"; Response.AppendHeader("Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) ); Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");//设置输出流为简体中文 Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 this.EnableViewState = false; System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true); System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); ToExcelGrid.RenderControl(oHtmlTextWriter); Response.Write(oStringWriter.ToString()); Response.End();}用该方法的时候,需要注意将DataGrid数据源中的允许翻页,允许排 序设置成"false",同时一些特殊行进行需要将其设置成不可视,如编辑行等,若不这样的话,用该方法实现的数据导入到Excel,会出现异常“需要将 XXX放入到一个具有runat=server的form窗体中”,我具体忘了XXX代表的意思,你可以在实践中尝试一下,就可以知道出现的错误。3. .Net中导入Excel数据时应注意的事 从Excel向数据库导数据的时候,最常用的方式是使用Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:"Demo.xls; Extended Properties='Excel 8.0;HDR=YES;IMEX=1'。 但 是当一列中既有数字,又有文本的时候,总是莫名其妙的出现部分数据读不到的现象,有时是读不到文本数据,有时是读不到数字数据。这是为什么呢?原来 OleDb会智能的根据前8行的数据判断Excel的列类型,当文本数据的行数 > 数字数据的行数时,列类型被设为文本,否则为数字。那我想读到全部的数据该做些什么呢?这位同学问得好,秘密就在于IMEX=1,以导入模式读取数据。
『捌』 .NET 导出 Excel文件
有2种方法哈,可以利用oledb进行操作,此方法主要是针对表格形式的excel比较适用。此时,每一个sheet都是一个datatable。string strConn;strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";OleDbConnection OleConn = new OleDbConnection(strConn);OleConn.Open();String sql = "insert[Sheet1$] (1,2,3) values (a,b,c) ";OleDbCommand cmd = new OleDbCommand();cmd.ExecuteNonQuery();还有就是利用office自己提供的dll进行操作。Workbook wBook = app.Workbooks.Add(true);Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
『玖』 asp.net导出数据生成真正的excel文件
我一般都是用gridview导出数据,你看看代码吧 对你有没有帮助, ———————-按钮事件——————-protected void Button2_Click(object sender, EventArgs e) { Export("application/ms-excel", "sssss.xls"); } private void Export(string FileType, string FileName) { Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF7; Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); Response.ContentType = FileType; this.EnableViewState = false; StringWriter tw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); // turn off paging GridView1.AllowPaging = false; this.GridView1.DataBind(); GridView1.RenderControl(hw); Response.Write(tw.ToString()); Response.End(); // turn the paging on again GridView1.AllowPaging = true; this.GridView1.DataBind(); } 下面这句不加的话回出错误 public override void VerifyRenderingInServerForm(Control control) { }页面:EnableEventValidation = "false"
『拾』 。NET 内容转换为EXCEL表 谁能帮我注释一下,每行是什么意思,干嘛用的,谢谢啊!
string style = @"<style> .text { mso-number-format:\@; } </script> "; Response.ClearContent();下面这两句输出excel指定文件类型,文件名 Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls"); Response.ContentType = "application/excel";创建一个StringWriter实例 StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); gvUsers.RenderControl(htw);// Style is added dynamically//你从下面这段代码开始看,就明白这一堆代码是干什么的了 Response.Write(style); Response.Write(sw.ToString()); Response.End();