导出excel、word、csv文件方法汇总
阅读原文时间:2023年07月10日阅读:2

http://www.woaic.com/2012/06/64

excel文件主要是输出html代码。以xls的文本格式保存文件。

生成excel格式的代码:

///

 /// 输出excel格式的html代码

 ///

 ///

 ///

 ///

 ///

 ///

 public string MakeExcelStr(DataTable dt, string fileName, string[] tableHeader,bool UseDefinedHeader)

 {

 StringBuilder strResult = new StringBuilder();

 int iColCount = dt.Columns.Count;

 if (dt.Columns.Count == 0)

 return strResult.ToString();

 strResult.Append("

");

 strResult.Append("

");

 if (UseDefinedHeader)//是否是用户自定义表头

 {

 for (int i = 0; i < tableHeader.Length; i++)

 {

 strResult.Append("

");//让文本居中显示

 }

 }

 else

 {

 for (int i = 0; i < iColCount; i++)

 {

 strResult.Append("

");

 }

 }

 strResult.Append("

");

 foreach (DataRow dr in dt.Rows)

 {

 strResult.Append("

");

 for (int i = 0; i < iColCount; i++)

 {

 // style=\"vnd.ms-excel.numberformat:@\"

 strResult.Append("

");//设置单元格是文本格式(防止文本是科学计算法,即E+***这种情况)

 }

 strResult.Append("

");

 }

 strResult.Append("

" + tableHeader[i] + " " + (dt.Columns[i] + "").ToString() + "
'" + (dr[i] + "").ToString() + "
");

 

return strResult.ToString();

 }

把生成的excel格式的代码保存成excel文件的方法

///

 /// 导出excel表格

 ///

 ///

 ///

 /// 表头

 /// 是否自定义表头

 private void ExprotToExcel(DataTable dt, string fileName, string[] tableHeader, bool Defined)

 {

 DogManage.Common.ExcelHelper excelHelper = new DogManage.Common.ExcelHelper();

 string result = excelHelper.MakeExcelStr(dt, fileName, tableHeader,Defined);

 

 HttpContext.Current.Response.Clear();

 System.IO.StringWriter sw = new System.IO.StringWriter();

 sw.Write(result);

 sw.Close();

 string str2 = HttpUtility.UrlEncode(fileName + "_" + DateTime.Now.ToString("yyyy-MM-dd"));

 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" +str2 + ".xls");

 HttpContext.Current.Response.ContentType = "application/ms-excel";

 HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");

 HttpContext.Current.Response.Write(sw);

 HttpContext.Current.Response.End();

 }

生成word的代码:

private void exportword()

 {

 Response.Clear();

 Response.Buffer = true;

 Response.Charset = "utf-8";

 Response.AppendHeader("Content-Disposition", "attachment;filename=tmp.doc");

 Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");

 

Response.ContentType = "application/ms-word";

 this.EnableViewState = false;

 System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

 System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

 oHtmlTextWriter.WriteLine(hf.Value);

 Response.Write(oStringWriter.ToString());

 Response.End();

 }

csv文件就是一个有特定格式的字符串拼接出来的文件,每个列通过,分割开来。换行则两外输出一行文本就行了

生成csv文件的代码:

///

 /// 输出csv文件的代码

 ///

 ///

 ///

 /// 表头

 ///

 public string MakeCSVStr(DataTable dt, string fileName, string[] tableHeader)

 {

 StringBuilder strResult = new StringBuilder();

 string temp = string.Empty;

 int iColCount = dt.Columns.Count;

 if (iColCount == 0)

 return strResult.ToString();

 for (int i = 0; i < iColCount; i++)

 {

 temp+="\"" + dt.Columns[i] + "\"";

 if (i < iColCount - 1)

 temp+=",";

 }

 strResult.AppendLine(temp);

 foreach (DataRow dr in dt.Rows)

 {

 temp = "";

 for (int i = 0; i < iColCount; i++)

 {

 if (!Convert.IsDBNull(dr[i]))

 temp+="\"" + dr[i].ToString() + "\"";

 else

 temp += "\"\"";

 if (i < iColCount - 1)

 temp+=",";

 }

 strResult.AppendLine(temp);

 }

 return strResult.ToString();

 }

导出csv文件的方法:

///

 /// 导出csv文件

 ///

 ///

 ///

 /// 表头

 /// 是否自定义表头

 private void ExprotToCSV(DataTable dt,string fileName, string[] tableHeader)

 {

 DogManage.Common.ExcelHelper excelHelper = new DogManage.Common.ExcelHelper();

 string result=excelHelper.MakeCSVStr(dt, fileName, tableHeader);

 

HttpContext.Current.Response.Clear();

 System.IO.StringWriter sw = new System.IO.StringWriter();

 sw.Write(result);

 sw.Close();

 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv");

 HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";

 HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

 HttpContext.Current.Response.Write(sw);

 HttpContext.Current.Response.End();

 }

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章