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     }

 

你可能感兴趣的:(导出Excel)