首页 > 代码库 > C#关于导出excel的方法

C#关于导出excel的方法

一说到导出excel可能很多人都会觉得说直接利用npoi 导入导出excel格式的文件,那样非常方便,但是可能有些时候有的浏览器不支持,那么该怎么办呢,现在介绍一种纯C#的导出excel的方法,代码如下:

 

  1 public void excel_output1(DataTable dt)  2     {  3         Response.Clear();  4   5         Response.Buffer = true;  6   7         Response.Charset = "utf-8 ";  8         Response.AddHeader("Content-Disposition", "attachment;filename=" +  9         HttpUtility.UrlEncode(DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls", System.Text.Encoding.UTF8)); 10         Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); 11         Response.ContentType = "application/ms-excel"; 12         this.EnableViewState = false; 13         System.IO.StringWriter sw = new System.IO.StringWriter(); 14  15         sw.WriteLine("<?xml version=\"1.0\"?>"); 16         sw.WriteLine("<?mso-application progid=\"Excel.Sheet\"?>"); 17         sw.WriteLine("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\""); 18         sw.WriteLine(" xmlns:o=\"urn:schemas-microsoft-com:office:office\""); 19         sw.WriteLine(" xmlns:x=\"urn:schemas-microsoft-com:office:excel\""); 20         sw.WriteLine(" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\""); 21         sw.WriteLine(" xmlns:html=\"http://www.w3.org/TR/REC-html40\">"); 22         sw.WriteLine(" <DocumentProperties xmlns=\"urn:schemas-microsoft-com:office:office\">"); 23         sw.WriteLine("  <Created>1996-12-17T01:32:42Z</Created>"); 24         sw.WriteLine("  <LastSaved>2011-05-29T05:59:50Z</LastSaved>"); 25         sw.WriteLine("  <Version>11.6360</Version>"); 26         sw.WriteLine(" </DocumentProperties>"); 27         sw.WriteLine(" <OfficeDocumentSettings xmlns=\"urn:schemas-microsoft-com:office:office\">"); 28         sw.WriteLine("  <RemovePersonalInformation/>"); 29         sw.WriteLine(" </OfficeDocumentSettings>"); 30         sw.WriteLine(" <ExcelWorkbook xmlns=\"urn:schemas-microsoft-com:office:excel\">"); 31         sw.WriteLine("  <WindowHeight>4530</WindowHeight>"); 32         sw.WriteLine("  <WindowWidth>8505</WindowWidth>"); 33         sw.WriteLine("  <WindowTopX>480</WindowTopX>"); 34         sw.WriteLine("  <WindowTopY>120</WindowTopY>"); 35         sw.WriteLine("  <AcceptLabelsInFormulas/>"); 36         sw.WriteLine("  <ProtectStructure>False</ProtectStructure>"); 37         sw.WriteLine("  <ProtectWindows>False</ProtectWindows>"); 38         sw.WriteLine(" </ExcelWorkbook>"); 39         sw.WriteLine(" <Styles>"); 40         sw.WriteLine("  <Style ss:ID=\"Default\" ss:Name=\"Normal\">"); 41         sw.WriteLine("   <Alignment ss:Vertical=\"Bottom\"/>"); 42         sw.WriteLine("   <Borders/>"); 43         sw.WriteLine("   <Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"12\"/>"); 44         sw.WriteLine("   <Interior/>"); 45         sw.WriteLine("   <NumberFormat/>"); 46         sw.WriteLine("   <Protection/>"); 47         sw.WriteLine("  </Style>"); 48         sw.WriteLine("  <Style ss:ID=\"s28\">"); 49         sw.WriteLine("   <Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Bottom\"/>"); 50         sw.WriteLine("   <Borders>"); 51         sw.WriteLine("    <Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 52         sw.WriteLine("    <Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 53         sw.WriteLine("    <Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 54         sw.WriteLine("    <Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 55         sw.WriteLine("   </Borders>"); 56         sw.WriteLine("  </Style>"); 57         sw.WriteLine("  <Style ss:ID=\"s29\">"); 58         sw.WriteLine("   <Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Center\"/>"); 59         sw.WriteLine("   <Borders>"); 60         sw.WriteLine("    <Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 61         sw.WriteLine("    <Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 62         sw.WriteLine("    <Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 63         sw.WriteLine("    <Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 64         sw.WriteLine("   </Borders>"); 65         sw.WriteLine("  </Style>"); 66         sw.WriteLine("  <Style ss:ID=\"s31\">"); 67         sw.WriteLine("   <Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Center\"/>"); 68         sw.WriteLine("   <Borders>"); 69         sw.WriteLine("    <Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 70         sw.WriteLine("    <Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 71         sw.WriteLine("    <Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 72         sw.WriteLine("    <Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 73         sw.WriteLine("   </Borders>"); 74         sw.WriteLine("   <Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"24\" ss:Bold=\"1\"/>"); 75         sw.WriteLine("  </Style>"); 76         sw.WriteLine("  <Style ss:ID=\"s32\">"); 77         sw.WriteLine("   <Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Bottom\"/>"); 78         sw.WriteLine("   <Borders>"); 79         sw.WriteLine("    <Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 80         sw.WriteLine("    <Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 81         sw.WriteLine("    <Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 82         sw.WriteLine("    <Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 83         sw.WriteLine("   </Borders>"); 84         sw.WriteLine("   <Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"12\" ss:Bold=\"1\"/>"); 85         sw.WriteLine("  </Style>"); 86         sw.WriteLine("  <Style ss:ID=\"s33\">"); 87         sw.WriteLine("   <Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Center\"/>"); 88         sw.WriteLine("   <Borders>"); 89         sw.WriteLine("    <Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 90         sw.WriteLine("    <Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 91         sw.WriteLine("    <Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 92         sw.WriteLine("    <Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>"); 93         sw.WriteLine("   </Borders>"); 94         sw.WriteLine("   <Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"12\" ss:Bold=\"1\"/>"); 95         sw.WriteLine("  </Style>"); 96         sw.WriteLine(" </Styles>"); 97         sw.WriteLine(" <Worksheet ss:Name=\"Sheet1\">"); 98         //sw.WriteLine("  <Table ss:ExpandedColumnCount=\"9\" ss:ExpandedRowCount=\"9\" x:FullColumns=\"1\""); 99 100         string dt_str = "<Table ss:ExpandedColumnCount=\"13\" ss:ExpandedRowCount=\"";101         int dt_rCount = dt.Rows.Count + 5;102         dt_str += dt_rCount.ToString() + "\" x:FullColumns=\"1\"";103         sw.WriteLine(dt_str);104 105 106         sw.WriteLine("   x:FullRows=\"1\" ss:DefaultColumnWidth=\"54\" ss:DefaultRowHeight=\"14.25\">");107 108         sw.WriteLine("   <Column ss:AutoFitWidth=\"0\" ss:Width=\"93.75\"/>");109         sw.WriteLine("   <Column ss:AutoFitWidth=\"0\" ss:Width=\"111.75\" ss:Span=\"1\"/>");110         sw.WriteLine("   <Column ss:Index=\"4\" ss:AutoFitWidth=\"0\" ss:Width=\"102\"/>");111         sw.WriteLine("   <Column ss:AutoFitWidth=\"0\" ss:Width=\"135.75\" ss:Span=\"3\"/>");112         sw.WriteLine("   <Column ss:Index=\"9\" ss:AutoFitWidth=\"0\" ss:Width=\"183.75\"/>");113         sw.WriteLine("   <Column ss:AutoFitWidth=\"0\" ss:Width=\"63.75\"/>");114         sw.WriteLine("   <Column ss:AutoFitWidth=\"0\" ss:Width=\"183.75\"/>");115         sw.WriteLine("   <Column ss:AutoFitWidth=\"0\" ss:Width=\"63.75\"/>");116         sw.WriteLine("   <Column ss:AutoFitWidth=\"0\" ss:Width=\"163.75\"/>");117         sw.WriteLine("   <Row ss:Index=\"2\">");118         sw.WriteLine("    <Cell ss:MergeAcross=\"12\" ss:MergeDown=\"2\" ss:StyleID=\"s31\"><Data");119         sw.WriteLine("      ss:Type=\"String\">回访详单</Data></Cell>");120         sw.WriteLine("   </Row>");121         sw.WriteLine("   <Row ss:Index=\"5\">");122         sw.WriteLine("    <Cell ss:StyleID=\"s32\"><Data ss:Type=\"String\">营业区</Data></Cell>");123         sw.WriteLine("    <Cell ss:StyleID=\"s33\"><Data ss:Type=\"String\">任务总数</Data></Cell>");124         sw.WriteLine("    <Cell ss:StyleID=\"s32\"><Data ss:Type=\"String\">明确表示不使用</Data></Cell>");125         sw.WriteLine("    <Cell ss:StyleID=\"s33\"><Data ss:Type=\"String\">迁移无线</Data></Cell>");126         sw.WriteLine("    <Cell ss:StyleID=\"s33\"><Data ss:Type=\"String\">改网通</Data></Cell>");127         sw.WriteLine("    <Cell ss:StyleID=\"s32\"><Data ss:Type=\"String\">改电信</Data></Cell>");128         sw.WriteLine("    <Cell ss:StyleID=\"s32\"><Data ss:Type=\"String\">联系不上的1个月以上无上网记录</Data></Cell>");129         sw.WriteLine("    <Cell ss:StyleID=\"s33\"><Data ss:Type=\"String\">联系不上有上网记录</Data></Cell>");130         sw.WriteLine("    <Cell ss:StyleID=\"s33\"><Data ss:Type=\"String\">对网络不满意</Data></Cell>");131         sw.WriteLine("    <Cell ss:StyleID=\"s33\"><Data ss:Type=\"String\">对服务不满意</Data></Cell>");132         sw.WriteLine("    <Cell ss:StyleID=\"s33\"><Data ss:Type=\"String\">考虑中</Data></Cell>");133         sw.WriteLine("    <Cell ss:StyleID=\"s33\"><Data ss:Type=\"String\">已续费</Data></Cell>");134         sw.WriteLine("   </Row>");135 136         int cs_i = 1;137         DataRow[] dt_myRow = dt.Select("");138 139         foreach (DataRow dt_row in dt_myRow)140         {141             sw.WriteLine("   <Row>");142 143             sw.WriteLine("    <Cell ss:StyleID=\"s29\"><Data ss:Type=\"String\">" + dt_row[0].ToString() + "</Data></Cell>");144             sw.WriteLine("    <Cell ss:StyleID=\"s28\"><Data ss:Type=\"String\">" + dt_row[1].ToString() + "</Data></Cell>");145             sw.WriteLine("    <Cell ss:StyleID=\"s29\"><Data ss:Type=\"String\">" + dt_row[2].ToString() + "</Data></Cell>");146             sw.WriteLine("    <Cell ss:StyleID=\"s29\"><Data ss:Type=\"String\">" + dt_row[2].ToString() + "</Data></Cell>");147             sw.WriteLine("    <Cell ss:StyleID=\"s28\"><Data ss:Type=\"String\">" + dt_row[4].ToString() + "</Data></Cell>");148             sw.WriteLine("    <Cell ss:StyleID=\"s29\"><Data ss:Type=\"String\">" + dt_row[5].ToString() + "</Data></Cell>");149             sw.WriteLine("    <Cell ss:StyleID=\"s29\"><Data ss:Type=\"String\">" + dt_row[6].ToString() + "</Data></Cell>");150             sw.WriteLine("    <Cell ss:StyleID=\"s28\"><Data ss:Type=\"String\">" + dt_row[7].ToString() + "</Data></Cell>");151             sw.WriteLine("    <Cell ss:StyleID=\"s28\"><Data ss:Type=\"String\">" + dt_row[8].ToString() + "</Data></Cell>");152             sw.WriteLine("    <Cell ss:StyleID=\"s28\"><Data ss:Type=\"String\">" + dt_row[9].ToString() + "</Data></Cell>");153             sw.WriteLine("    <Cell ss:StyleID=\"s28\"><Data ss:Type=\"String\">" + dt_row[10].ToString() + "</Data></Cell>");154             sw.WriteLine("    <Cell ss:StyleID=\"s28\"><Data ss:Type=\"String\">" + dt_row[11].ToString() + "</Data></Cell>");155             //sw.WriteLine("    <Cell ss:StyleID=\"s28\"><Data ss:Type=\"String\">" + dt_row[12].ToString() + "</Data></Cell>");156             sw.WriteLine("   </Row>");157             cs_i++;158         }159 160 161 162         //sw.WriteLine("   <Row>");163         //sw.WriteLine("    <Cell ss:MergeAcross=\"5\" ss:StyleID=\"s33\"><Data ss:Type=\"String\">合计</Data></Cell>");164         //sw.WriteLine("    <Cell ss:StyleID=\"s32\" ss:Formula=\"=SUM(OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),6-ROW(),0,ROW()-6,1))\"><Data ss:Type=\"Number\">1</Data></Cell>");165         //sw.WriteLine("    <Cell  ss:MergeAcross=\"1\" ss:StyleID=\"s32\" ><Data ss:Type=\"Number\"></Data></Cell>");166         //sw.WriteLine("   </Row>");167         sw.WriteLine("  </Table>");168         sw.WriteLine("  <WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");169         sw.WriteLine("   <Print>");170         sw.WriteLine("    <ValidPrinterInfo/>");171         sw.WriteLine("    <PaperSizeIndex>9</PaperSizeIndex>");172         sw.WriteLine("    <HorizontalResolution>600</HorizontalResolution>");173         sw.WriteLine("    <VerticalResolution>600</VerticalResolution>");174         sw.WriteLine("   </Print>");175         sw.WriteLine("   <Selected/>");176         sw.WriteLine("   <Panes>");177         sw.WriteLine("    <Pane>");178         sw.WriteLine("     <Number>3</Number>");179         sw.WriteLine("     <ActiveRow>8</ActiveRow>");180         sw.WriteLine("     <ActiveCol>12</ActiveCol>");181         sw.WriteLine("    </Pane>");182         sw.WriteLine("   </Panes>");183         sw.WriteLine("   <ProtectObjects>False</ProtectObjects>");184         sw.WriteLine("   <ProtectScenarios>False</ProtectScenarios>");185         sw.WriteLine("  </WorksheetOptions>");186         sw.WriteLine(" </Worksheet>");187         sw.WriteLine(" <Worksheet ss:Name=\"Sheet2\">");188         sw.WriteLine("  <Table ss:ExpandedColumnCount=\"0\" ss:ExpandedRowCount=\"0\" x:FullColumns=\"1\"");189         sw.WriteLine("   x:FullRows=\"1\" ss:DefaultColumnWidth=\"54\" ss:DefaultRowHeight=\"14.25\"/>");190         sw.WriteLine("  <WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");191         sw.WriteLine("   <ProtectObjects>False</ProtectObjects>");192         sw.WriteLine("   <ProtectScenarios>False</ProtectScenarios>");193         sw.WriteLine("  </WorksheetOptions>");194         sw.WriteLine(" </Worksheet>");195         sw.WriteLine(" <Worksheet ss:Name=\"Sheet3\">");196         sw.WriteLine("  <Table ss:ExpandedColumnCount=\"0\" ss:ExpandedRowCount=\"0\" x:FullColumns=\"1\"");197         sw.WriteLine("   x:FullRows=\"1\" ss:DefaultColumnWidth=\"54\" ss:DefaultRowHeight=\"14.25\"/>");198         sw.WriteLine("  <WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");199         sw.WriteLine("   <ProtectObjects>False</ProtectObjects>");200         sw.WriteLine("   <ProtectScenarios>False</ProtectScenarios>");201         sw.WriteLine("  </WorksheetOptions>");202         sw.WriteLine(" </Worksheet>");203         sw.WriteLine("</Workbook>");204 205         Response.Write(sw);206         Response.End();207 208     }

 

C#关于导出excel的方法