c#后台如何导出excel到本地_C#实现导出Excel
這段時間用到了導出Excel的功能,這個功能還是比較常用的,我常用的有兩個方法,現在整理一下,方便以后查看。
一、實現DataTable數據導出到本地,需要自己傳進去導出的路徑。
///
/// DataTable導出到Excel
///
/// DataTable類型的數據源
/// 需要導出的文件路徑
public void dataTableToCsv(DataTable table, string file)
{
string title = "";
FileStream fs = new FileStream(file, FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(new BufferedStream(fs), System.Text.Encoding.Default);
for (int i = 0; i < table.Columns.Count; i++)
{
title += table.Columns[i].ColumnName + "\t"; //欄位:自動跳到下一單元格
}
title = title.Substring(0, title.Length - 1) + "\n";
sw.Write(title);
foreach (DataRow row in table.Rows)
{
string line = "";
for (int i = 0; i < table.Columns.Count; i++)
{
line += row[i].ToString().Trim() + "\t"; //內容:自動跳到下一單元格
}
line = line.Substring(0, line.Length - 1) + "\n";
sw.Write(line);
}
sw.Close();
fs.Close();
}
二、實現DataTable數據導出到本地,路徑可以由用戶自主選擇。
///
/// DataTable導出到Excel
///
/// DataTable類型的數據源
/// 文件類型
/// 文件名
public void CreateExcel(DataTable dt, string FileType, string FileName)
{
Response.Clear();
Response.Charset = "UTF-8";
Response.Buffer = true;
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\"");
Response.ContentType = FileType;
string colHeaders = string.Empty;
string ls_item = string.Empty;
DataRow[] myRow = dt.Select();
int i = 0;
int cl = dt.Columns.Count;
for (int j = 0; j < dt.Columns.Count; j++)
{
ls_item += dt.Columns[j].ColumnName + "\t"; //欄位:自動跳到下一單元格
}
ls_item = ls_item.Substring(0, ls_item.Length - 1) + "\n";
foreach (DataRow row in myRow)
{
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))
{
ls_item += row[i].ToString() + "\n";
}
else
{
ls_item += row[i].ToString() + "\t";
}
}
Response.Output.Write(ls_item);
ls_item = string.Empty;
}
Response.Output.Flush();
Response.End();
}
三、方法的調用。
第一種方法的調用:
this.dataTableToCsv(dt, @"C:\Users\Admin\Desktop\收聽率" + DateTime.Now.ToString("yyyy-MM-dd HHmmss") + ".xls"); //調用函數
第二種方法的調用:
CreateExcel(dt, "application/ms-excel", "Excel" + DateTime.Now.ToString("yyyy-MM-dd HHmmss") + ".xls");//調用函數
這兩種方法都是可以直接調用的,只需要傳入需要的參數即可。
如果是通過前臺js方式實現,跳轉href為實現數據導出的頁面地址,我是通過前臺跳轉到ashx頁面實現的
ashx頁面內容
public voidProcessRequest(HttpContext context)
{string message = "";string Action = context.Request["Action"];switch(Action)
{case "Excel":
DataTable Radio=GetExcleData(context); //獲取導出數據源
RadioCommon helper= newRadioCommon();
helper.ExportExcel(Radio,"application/ms-excel", "Excel" + DateTime.Now.ToString("yyyy-MM-dd HHmmss"));break;}
context.Response.Write(message);
}
js部分內容
$("#Excel").bind('click', function () {var url = "AjaxHandler/RadioFamilyDayNumber.ashx?Action=Excel";
window.location.href= url;//導出Excel
})
總結
以上是生活随笔為你收集整理的c#后台如何导出excel到本地_C#实现导出Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NAT基本原理与私有IP
- 下一篇: C#项目解决方案管理器中将*.Desig