将Datagrid导出为ex​​cel asp

什么是将Datagrid导出为ex​​cel的最佳方法? 我没有任何经验将datagrid导出到excel,所以我想知道你们如何将datagrid导出到excel。 我读到有很多方法,但我想只是简单地导出excel到datagrid function.i我正在使用asp.net C#

干杯..

最简单的方法是简单地将csv或html(特别是

...

...

)写入输出,只需通过内容类型标题假装它是excel格式。 Excel将很乐意加载; csv更简单……

这是一个类似的例子(它实际上需要一个IEnumerable,但它与任何源类似(例如DataTable ,在行上循环)。

  public static void WriteCsv(string[] headers, IEnumerable data, string filename) { if (data == null) throw new ArgumentNullException("data"); if (string.IsNullOrEmpty(filename)) filename = "export.csv"; HttpResponse resp = System.Web.HttpContext.Current.Response; resp.Clear(); // remove this line if you don't want to prompt the user to save the file resp.AddHeader("Content-Disposition", "attachment;filename=" + filename); // if not saving, try: "application/ms-excel" resp.ContentType = "text/csv"; string csv = GetCsv(headers, data); byte[] buffer = resp.ContentEncoding.GetBytes(csv); resp.AddHeader("Content-Length", buffer.Length.ToString()); resp.BinaryWrite(buffer); resp.End(); } static void WriteRow(string[] row, StringBuilder destination) { if (row == null) return; int fields = row.Length; for (int i = 0; i < fields; i++) { string field = row[i]; if (i > 0) { destination.Append(','); } if (string.IsNullOrEmpty(field)) continue; // empty field bool quote = false; if (field.Contains("\"")) { // if contains quotes, then needs quoting and escaping quote = true; field = field.Replace("\"", "\"\""); } else { // commas, line-breaks, and leading-trailing space also require quoting if (field.Contains(",") || field.Contains("\n") || field.Contains("\r") || field.StartsWith(" ") || field.EndsWith(" ")) { quote = true; } } if (quote) { destination.Append('\"'); destination.Append(field); destination.Append('\"'); } else { destination.Append(field); } } destination.AppendLine(); } static string GetCsv(string[] headers, IEnumerable data) { StringBuilder sb = new StringBuilder(); if (data == null) throw new ArgumentNullException("data"); WriteRow(headers, sb); foreach (string[] row in data) { WriteRow(row, sb); } return sb.ToString(); } 

你可以这样做:

 private void ExportButton_Click(object sender, System.EventArgs e) { Response.Clear(); Response.Buffer = true; Response.ContentType = "application/vnd.ms-excel"; Response.Charset = ""; this.EnableViewState = false; System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); this.ClearControls(dataGrid); dataGrid.RenderControl(oHtmlTextWriter); Response.Write(oStringWriter.ToString()); Response.End(); } 

在这里完成示例。

将值导出到Excel或Word或PDF检查http://techdotnets.blogspot.com/

SpreadsheetGear for .NET将会这样做。

您可以在此处查看带有C#和VB源代码的实时ASP.NET示例。 其中一些示例演示了将DataSet或DataTable转换为Excel – 您可以轻松地从DataGrid获取DataSet或DataTable。 如果您想自己试用,可以在此下载免费试用版。

免责声明:我拥有SpreadsheetGear LLC