csv datatable 乱码 导出_DataTable内容导出为CSV文件

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingSystem.Web;6 usingSystem.Threading;7 usingSystem.IO;8 usingSystem.Data;9 usingSystem.Windows.Forms;10

11 namespaceIMSCommonFunction12 {13 public classCSVHelper14 {15 public static string FilterCSVCell(stringcellContent)16 {17 bool isAddFlag = false;18 if (cellContent.IndexOf("\"") != -1)19 {20 cellContent = cellContent.Replace("\"", "\"\"");21 cellContent = "\"" + cellContent + "\"";22 isAddFlag = true;23 }24 if (cellContent.IndexOf(",") != -1 && isAddFlag != true)25 {26 cellContent = "\"" + cellContent + "\"";27 }28 returncellContent;29 }30

31 public static void ExportCSVFile(HttpResponse response, string fullPath, stringContent)32 {33 try

34 {35 response.Buffer = true;36 response.Clear();37 response.Charset =System.Text.Encoding.Default.BodyName;38 response.ContentEncoding = System.Text.Encoding.UTF8;//System.Text.Encoding.GetEncoding("GB2312");//GB2312用Excel打开时,没有乱码。

39 response.AppendHeader("Content-Disposition", "attachment;filename=" +fullPath);40 response.ContentType = "application/ms-excel";41 response.Output.Write(Content);42 response.Flush();43 response.End();44 }45 catch(ThreadAbortException)46 {47 }48 catch(Exception ex)49 {50 throw new ApplicationException(string.Format("Export CSV file have a error: {0}", fullPath), ex);51 }52 }53

54 public static void FileDownload(stringFullFileName)55 {56 FileInfo DownloadFile = newFileInfo(FullFileName);57 System.Web.HttpContext.Current.Response.Clear();58 System.Web.HttpContext.Current.Response.ClearHeaders();59 System.Web.HttpContext.Current.Response.Buffer = false;60 string extension =Path.GetExtension(FullFileName);61 extension = string.IsNullOrEmpty(extension) ?extension : extension.ToLower();62 switch(extension)63 {64 case ".xml":65 System.Web.HttpContext.Current.Response.ContentType = "text/xml";66 break;67 default:68 System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";69 break;70 }71 string browser =System.Web.HttpContext.Current.Request.UserAgent.ToUpper();72 bool isNeedEncode = !browser.Contains("FIREFOX");73 System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" +

74 (isNeedEncode ?System.Web.HttpUtility.UrlEncode(DownloadFile.Name, System.Text.Encoding.UTF8) : DownloadFile.Name));75 System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());76 System.Web.HttpContext.Current.Response.Flush();77 if(System.Web.HttpContext.Current.Response.IsClientConnected)78 System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName);79

80 //出错

81 System.Web.HttpContext.Current.Response.End();82 System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();83 }84

85 public static void DataHtmlToExcel(HttpResponse response, DataTable dt, stringstrFileName)86 {87 string style = @"

89 response.Clear();90 response.Buffer = true;91 response.Charset = "utf-8";92 response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");93 //Response.Charset = "utf-8";

94 if (strFileName.Length > 0)95 {96 response.AppendHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(strFileName)));97 }98 else

99 {100 response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");101 }102 //Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");

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

105 //绑定数据到DataGrid1

106 System.Web.UI.WebControls.DataGrid DataGrid1 = newSystem.Web.UI.WebControls.DataGrid();107 DataGrid1.DataSource =dt.DefaultView;108 DataGrid1.DataBind();109 //将DataGrid1构成的html代码写进StringWriter110 //DataGrid1.Page.EnableViewState = false;

111 System.IO.StringWriter tw = newSystem.IO.StringWriter();112 System.Web.UI.HtmlTextWriter hw = newSystem.Web.UI.HtmlTextWriter(tw);113 DataGrid1.RenderControl(hw);114

115 response.Write(style);//注意

116 response.Write(tw.ToString());117 response.Flush();118 response.End();119 }120

121 public static void ExportExcel(HttpResponse response, DataTable dt, stringfilename)122 {123 try

124 {125 response.Clear();126 response.BufferOutput = true;127 response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");128 response.AppendHeader("Content-Disposition", "attachment;filename=" +

129 HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(filename)));130 response.ContentType = "application/ms-excel";131 StringBuilder colHeaders = newStringBuilder();132 StringBuilder items = newStringBuilder();133

134 DataRow[] dr =dt.Select();135

136 int i = 0;137 int clength =dt.Columns.Count;138

139 for (i = 0; i < clength; i++)140 {141 if (i == clength - 1)142 {143 colHeaders.Append(dt.Columns[i].Caption.ToString() + "\n");144 }145 else

146 {147 colHeaders.Append(dt.Columns[i].Caption.ToString() + "\t");148 }149 }150 response.Write(colHeaders.ToString());151

152 foreach (DataRow row indr)153 {154 for (i = 0; i < clength; i++)155 {156 if (i == clength - 1)157 {158 items.Append(row[i].ToString() + "\n");159 }160 else

161 {162 items.Append(row[i].ToString() + "\t");163 }164 }165 }166 response.Write(items.ToString());167 }168 catch(Exception ex)169 {170 response.Write(ex.Message);171 }172 finally

173 {174 response.Flush();175 response.End();176 }177 }178

179 public static void DataTableToCSV(DataTable table, stringfile)180 {181 string title = "";182 FileStream fs = newFileStream(file, FileMode.Create);183 StreamWriter sw = new StreamWriter(newBufferedStream(fs), System.Text.Encoding.Default);184 for (int i = 0; i < table.Columns.Count; i++)185 {186 title += table.Columns[i].ColumnName + ",";187 }188 title = title.Substring(0, title.Length - 1) + "\n";189 sw.Write(title);190 foreach (DataRow row intable.Rows)191 {192 string line = "";193 for (int i = 0; i < table.Columns.Count; i++)194 {195 line += row[i].ToString() + ",";196 }197 line = line.Substring(0, line.Length - 1) + "\n";198 sw.Write(line);199 }200 sw.Close();201 fs.Close();202 }

204 }205 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值