ASP.NET用XML的方式导出到excel多sheet的实现方式
2013-01-28 21:41
357 查看
private void ToExcel(String FileName) { //要转换的XML文件 DataSet dsBook = new DataSet(); dsBook = new Select().Select_(); int rows = dsBook.Tables[0].Rows.Count + 1; int cols = dsBook.Tables[0].Columns.Count; //将要生成的Excel文件 string ExcelFileName = System.AppDomain.CurrentDomain.BaseDirectory + "\\ExcelFile\\"+FileName+".xls"; if (File.Exists(ExcelFileName)) { File.Delete(ExcelFileName); } StreamWriter writer = new StreamWriter(ExcelFileName, false); writer.WriteLine("<?xml version=\"1.0\"?>"); writer.WriteLine("<?mso-application progid=\"Excel.Sheet\"?>"); writer.WriteLine("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\""); writer.WriteLine(" xmlns:o=\"urn:schemas-microsoft-com:office:office\""); writer.WriteLine(" xmlns:x=\"urn:schemas-microsoft-com:office:excel\""); writer.WriteLine(" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\""); writer.WriteLine(" xmlns:html=\"http://www.w3.org/TR/REC-html40/\">"); writer.WriteLine(" <DocumentProperties xmlns=\"urn:schemas-microsoft-com:office:office\">"); writer.WriteLine(" <Author>Automated Report Generator Example</Author>"); writer.WriteLine(string.Format(" <Created>{0}T{1}Z</Created>", DateTime.Now.ToString("yyyy-mm-dd"), DateTime.Now.ToString("HH:MM:SS"))); writer.WriteLine(" <Company>minyou</Company>"); writer.WriteLine(" <Version>11.6408</Version>"); writer.WriteLine(" </DocumentProperties>"); writer.WriteLine(" <ExcelWorkbook xmlns=\"urn:schemas-microsoft-com:office:excel\">"); writer.WriteLine(" <WindowHeight>8955</WindowHeight>"); writer.WriteLine(" <WindowWidth>11355</WindowWidth>"); writer.WriteLine(" <WindowTopX>480</WindowTopX>"); writer.WriteLine(" <WindowTopY>15</WindowTopY>"); writer.WriteLine(" <ProtectStructure>False</ProtectStructure>"); writer.WriteLine(" <ProtectWindows>False</ProtectWindows>"); writer.WriteLine(" </ExcelWorkbook>"); writer.WriteLine(" <Styles>"); writer.WriteLine(" <Style ss:ID=\"Default\" ss:Name=\"Normal\">"); writer.WriteLine(" <Alignment ss:Vertical=\"Bottom\"/>"); writer.WriteLine(" <Borders/>"); writer.WriteLine(" <Font/>"); writer.WriteLine(" <Interior/>"); writer.WriteLine(" <Protection/>"); writer.WriteLine(" </Style>"); writer.WriteLine(" <Style ss:ID=\"s21\">"); writer.WriteLine(" <Alignment ss:Vertical=\"Bottom\" ss:WrapText=\"1\"/>"); writer.WriteLine(" </Style>"); writer.WriteLine(" </Styles>"); //第一个表 writer.WriteLine(" <Worksheet ss:Name=\"有油机\">"); writer.WriteLine(string.Format(" <Table ss:ExpandedColumnCount=\"{0}\" ss:ExpandedRowCount=\"{1}\" x:FullColumns=\"1\"", cols.ToString(), rows.ToString())); writer.WriteLine(" x:FullRows=\"1\">"); //生成标题 writer.WriteLine("<Row>"); foreach (DataColumn eachCloumn in dsBook.Tables[0].Columns) { writer.Write("<Cell ss:StyleID=\"s21\"><Data ss:Type=\"String\">"); writer.Write(eachCloumn.ColumnName.ToString()); writer.WriteLine("</Data></Cell>"); } writer.WriteLine("</Row>"); //生成数据记录 foreach (DataRow eachRow in dsBook.Tables[0].Rows) { writer.WriteLine("<Row>"); for (int currentRow = 0; currentRow != cols; currentRow++) { writer.Write("<Cell ss:StyleID=\"s21\"><Data ss:Type=\"String\">"); writer.Write(eachRow[currentRow].ToString()); writer.WriteLine("</Data></Cell>"); } writer.WriteLine("</Row>"); } writer.WriteLine(" </Table>"); writer.WriteLine(" <WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">"); writer.WriteLine(" <Selected/>"); writer.WriteLine(" <Panes>"); writer.WriteLine(" <Pane>"); writer.WriteLine(" <Number>3</Number>"); writer.WriteLine(" <ActiveRow>1</ActiveRow>"); writer.WriteLine(" </Pane>"); writer.WriteLine(" </Panes>"); writer.WriteLine(" <ProtectObjects>False</ProtectObjects>"); writer.WriteLine(" <ProtectScenarios>False</ProtectScenarios>"); writer.WriteLine(" </WorksheetOptions>"); writer.WriteLine(" </Worksheet>"); //第二个表 writer.WriteLine(" <Worksheet ss:Name=\"Sheet2\">"); writer.WriteLine(" <WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">"); writer.WriteLine(" <ProtectObjects>False</ProtectObjects>"); writer.WriteLine(" <ProtectScenarios>False</ProtectScenarios>"); writer.WriteLine(" </WorksheetOptions>"); writer.WriteLine(" </Worksheet>"); //第三个表 writer.WriteLine(" <Worksheet ss:Name=\"Sheet3\">"); writer.WriteLine(" <WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">"); writer.WriteLine(" <ProtectObjects>False</ProtectObjects>"); writer.WriteLine(" <ProtectScenarios>False</ProtectScenarios>"); writer.WriteLine(" </WorksheetOptions>"); writer.WriteLine(" </Worksheet>"); writer.WriteLine("</Workbook>"); writer.Close(); Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(ExcelFileName)); Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载 Response.WriteFile(ExcelFileName); // 把文件流发送到客户端 Response.End(); }
相关文章推荐
- asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台
- ASP.NET通过流方式导出EXCEL并且单元格换行
- C# asp.net 实现导出Excel
- asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法
- asp.net 导出excel(xls)文件 资料 --- 之一: xml文件格式导出
- asp.net实现Gradview绑定数据库数据并导出Excel的方法
- ASP.NET导出数据到Excel的实现方法
- 在asp.net中实现dataset与excel的相互导入导出
- asp.net用类似操纵Sql语句的方式快速实现Excel读写的方法(oleDB 方式)
- asp.net生成Excel并导出下载五种实现方法
- asp.net实现Gradview绑定数据库数据并导出Excel的方法
- ASP.NET使用GridView导出Excel实现方法
- asp.net c# 网页 导出excel 多表格 多个sheet
- asp.net下将Excel转成XML档的实现代码
- asp.net如何实现excel导入到sql或者根据需要再将sql中的数据导出到excel表格中
- asp.net+Ligerui实现grid导出Excel和Word的方法
- asp.net中实现,用户根据自己的需要,勾选checkbox,然后把查询到数据库中的内容导出到excel
- asp.net下将Excel转成XML档的实现代码
- Asp.net 将DataGrid分多个Sheet导出Excel