博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
导出excel、word、csv文件方法汇总
阅读量:5288 次
发布时间:2019-06-14

本文共 4849 字,大约阅读时间需要 16 分钟。

 

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

生成excel格式的代码:

/// <summary>

 /// 输出excel格式的html代码
 /// </summary>
 /// <param name="dt"></param>
 /// <param name="fileName"></param>
 /// <param name="tableHeader"></param>
 /// <param name="UseDefinedHeader"></param>
 /// <returns></returns>
 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("<table cellspacing=\"0\" cellpadding=\"5\" rules=\"all\" border=\"1\">");
 strResult.Append("<tr style=\"font-weight: bold; white-space: nowrap;\">");
 if (UseDefinedHeader)//是否是用户自定义表头
 {
 for (int i = 0; i < tableHeader.Length; i++)
 {
 strResult.Append("<td style=\"text-align:center\">" + tableHeader[i] + "</td>");//让文本居中显示
 }
 }
 else
 {
 for (int i = 0; i < iColCount; i++)
 {
 strResult.Append("<td style=\"text-align:center\">" + (dt.Columns[i] + "").ToString() + "</td>");
 }
 }
 strResult.Append("</tr>");
 foreach (DataRow dr in dt.Rows)
 {
 strResult.Append("<tr>");
 for (int i = 0; i < iColCount; i++)
 {
 // style=\"vnd.ms-excel.numberformat:@\"
 strResult.Append("<td style=\"vnd.ms-excel.numberformat:@\">'" + (dr[i] + "").ToString() + "</td>");//设置单元格是文本格式(防止文本是科学计算法,即E+***这种情况)
 }
 strResult.Append("</tr>");
 }
 strResult.Append("</table>");
 
return strResult.ToString();
 }

 

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

/// <summary>

 /// 导出excel表格
 /// </summary>
 /// <param name="dt"></param>
 /// <param name="fileName"></param>
 /// <param name="tableHeader">表头</param>
 /// <param name="Defined">是否自定义表头</param>
 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文件的代码:

/// <summary>

 /// 输出csv文件的代码
 /// </summary>
 /// <param name="dt"></param>
 /// <param name="fileName"></param>
 /// <param name="tableHeader">表头</param>
 /// <returns></returns>
 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文件的方法:

/// <summary>

 /// 导出csv文件
 /// </summary>
 /// <param name="dt"></param>
 /// <param name="fileName"></param>
 /// <param name="tableHeader">表头</param>
 /// <param name="Defined">是否自定义表头</param>
 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();
 }

转载于:https://www.cnblogs.com/swarb/p/9924287.html

你可能感兴趣的文章
javascript 事件委托
查看>>
父级界面调用iframe里面的方法
查看>>
SSL Certificate我来谈(1)-网站证书
查看>>
Python的if语句
查看>>
nodejs 优雅的连接 mysql
查看>>
LOJ114 k大(xiao)异或和(线性基)
查看>>
题解【luogu3709 大爷的字符串题】
查看>>
二叉搜索树(BST)学习笔记
查看>>
面向对象
查看>>
spring Boot 不认Mapper.xml
查看>>
Python str转化成数字
查看>>
Pascal's Triangle II(帕斯卡三角形)
查看>>
hdu 1026 Ignatius and the Princess I
查看>>
进程间通信之Messager
查看>>
C++基础 const
查看>>
WSS 3.0部署备忘 三
查看>>
JavaScript学习笔记第一天——基本数据类型(值类型)和引用类型
查看>>
linux xargs 命令详解
查看>>
解决调整透明度后文字也透明的问题。
查看>>
SCIP 练习集
查看>>