C#导出Excel
来源:互联网 发布:知乎 股份 腾讯 编辑:程序博客网 时间:2024/06/16 20:54
方法一
优点:简单
private void SupplierData_ButtonClick(object sender, string ButtonName) { DataSet da = getDataSource(0,0); DataTable dt = da.Tables[0]; string strxml = dbo.ExportCSV(dt); string path = Server.MapPath("..//Resource//PlanExcel//"); if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } string fileName = "供应商列表-" + DateTime.Now.ToString("yyyyMMddhhmmss") + string.Format("{0}", Session["UserCode"]) + ".xls"; FileStream fs = File.Create(path + fileName); StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8); sw.Write(strxml); sw.Flush(); sw.Close(); if (da != null) { da.Dispose(); } string s = "../Resource/PlanExcel/" + fileName; Response.Redirect(s); } // 将DataTable转换为string public string ExportCSV(DataTable dt) { string con = ""; foreach (DataColumn dc in dt.Columns) { con += dc.ColumnName + ","; } con = con.TrimEnd(',') + Environment.NewLine; for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { con += dt.Rows[i][j].ToString().Replace("\n", " ").Replace("\r\n", " ").Replace(",", ",") + ","; } con = con.TrimEnd(',') + Environment.NewLine; } return con; }
方法二
优点:可配置excel格式
缺点:出现过中文乱码bug,而且没有找到问题原因
protected void Export_Click(object sender, EventArgs e) { if (this.start.Value != string.Empty && this.end.Value != string.Empty) { OvertimeMeal overtimeMeal = new OvertimeMeal(); DateTime dateTime = DateTime.Parse(this.start.Value); DateTime dateTime2 = DateTime.Parse(this.end.Value); DataTable dataTable = overtimeMeal.OvertimeMealManageExport(dateTime, dateTime2); string fileName = "加班员工信息"; HttpResponse response = this.Page.Response; response.ClearContent(); if (dataTable == null || dataTable.Rows.Count == 0) { this.Page.ClientScript.RegisterStartupScript(typeof(string), Guid.NewGuid().ToString(), "<script>alert('没有所需的数据!')</script> "); } else { DataGrid dataGrid = new DataGrid(); dataGrid.DataSource = dataTable.DefaultView; dataGrid.DataBind(); this.ExcelStyle(dataGrid); this.ExcelOutStream(dataGrid, fileName, response); } } } private void ExcelOutStream(DataGrid dg, string fileName, HttpResponse Response) { //将http流添加到数据流 Response.Charset = "UTF-8"; //设置中文编码格式 Response.HeaderEncoding = Encoding.Default; Response.ContentEncoding = Encoding.Default; if (fileName == "") //文件名称处理 { Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DateTime.Now.ToString("yyyy-MM-dd") + ".xls", Encoding.UTF8).ToString()); } else { Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + DateTime.Now.ToString("yyyy-MM-dd") + ".xls", Encoding.UTF8).ToString()); } Response.ContentType = "application/excel"; //设置输出类型格式 StringWriter sw = new StringWriter(); //保存数据,输出数据 HtmlTextWriter htw = new HtmlTextWriter(sw); dg.Attributes.Add("style", "vnd.ms-excel.numberformat:@"); //设置Excel单元格格式为文本格式 dg.RenderControl(htw); Response.Write(sw.ToString()); Response.End(); } /// <summary> /// 样式设计 /// </summary> /// <param name="dg"></param> private void ExcelStyle(DataGrid dg) { //初始化控件样式 TableItemStyle AlternatingStyle = new TableItemStyle(); TableItemStyle headerStyle = new TableItemStyle(); TableItemStyle itemStyle = new TableItemStyle(); AlternatingStyle.BackColor = Color.Transparent; //内容背景颜色 headerStyle.BackColor = Color.Transparent; //标题背景颜色 headerStyle.Font.Bold = true; //设置粗体 headerStyle.HorizontalAlign = HorizontalAlign.Center; //内容对齐方式 itemStyle.HorizontalAlign = HorizontalAlign.Center; //标题对齐方式 //将样式添加到DataGrid中 dg.AlternatingItemStyle.MergeWith(AlternatingStyle); dg.HeaderStyle.MergeWith(headerStyle); dg.ItemStyle.MergeWith(itemStyle); dg.GridLines = GridLines.Both; dg.HeaderStyle.Font.Bold = true; }
方法三
解决方法二中文乱码问题,但是对Excel的格式配置不如方法二
protected void Export_Click(object sender, EventArgs e) { if (this.start.Value != string.Empty && this.end.Value != string.Empty) { var exec = new Execution.OvertimeMeal(); DateTime BeginTime = DateTime.Parse(this.start.Value); DateTime EndTime = DateTime.Parse(this.end.Value); DataTable dt = exec.OvertimeMealManageExport(BeginTime, EndTime); string fileName = HttpUtility.UrlEncode("加班员工信息" + DateTime.Now.ToString("yyyy-MM-dd"), Encoding.UTF8).ToString(); HttpResponse Response = this.Page.Response; Response.ClearContent(); if (dt == null || dt.Rows.Count == 0) { this.Page.ClientScript.RegisterStartupScript(typeof(string), Guid.NewGuid().ToString(), "<script>alert('没有所需的数据!')</script> "); return; } else { DataGrid dg = new DataGrid(); dg.DataSource = dt.DefaultView; dg.DataBind(); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Charset = "UTF-8";// "UTF-8"或者"GB2312" HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";//text/csv HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); System.IO.StringWriter oSW = new System.IO.StringWriter(); HtmlTextWriter oHW = new HtmlTextWriter(oSW); dg.Attributes.Add("style", "vnd.ms-excel.numberformat:@"); dg.RenderControl(oHW); HttpContext.Current.Response.Write("<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=UTF-8\"/>" + oSW.ToString()); HttpContext.Current.Response.End(); } } }
阅读全文
0 0
- C#读取Excel,导出Excel
- C#读取Excel,导出Excel
- C# 导出excel 生成excel
- C# 导出excel
- C#导出EXCEL
- C#导出Excel总结
- C#导出Excel总结
- C#导出Excel总结
- C#导出到EXCEL
- C#导出到EXCEL
- C#导出Excel汇总
- winForm c#导出Excel
- C# 导出Excel代码
- c# datagridview 导出excel
- C#导出到EXCEL
- c# datagridview 导出excel
- C#日记--导出Excel
- C#导出到EXCEL
- 主流的LPWAN技术,无非就这几种!
- java基础---java成员初始化过程
- Junit Test 常见问题
- TensorFlow中出现Nan值的解决办法
- element 2.0 上传excel +ssm
- C#导出Excel
- 最新版SublimeText,使用快捷键让在编文件快速在浏览器打开
- C#类和对象(五)——按值和按引用传递参数
- 2017.11.14心得
- 插件平台设计方案
- React Native 调用iOS原生功能—直播
- 后台返回的ContentType是img类型显示问题,header取值
- Spark算子
- 用户态与内核态的切换与区别