C# DataTable导出Excel
时间:2020-05-20
本文章向大家介绍C# DataTable导出Excel,主要包括C# DataTable导出Excel使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先下载NPOI.dll,下载完成后解压添加引用;
调用示例:
页面按钮
<asp:Button ID="btnExecl" runat="server" Width="90px" Height="39px" Text="导出全部名单" BackColor="#DD99FF" OnClick="btnExecl_Click" />
页面要添加这两个引用
调用方法示例:
//点击导出按钮 protected void btnExecl_Click(object sender, EventArgs e) { //绑定数据源 DataSet ds = bll.GetList("Result=25"); if (ds.Tables[0].Rows.Count > 0) { DataTable dt = new DataTable(); dt.Columns.Add("RTime", typeof(System.String)); dt.Columns.Add("Result", typeof(System.String)); dt.Columns.Add("OName", typeof(System.String)); dt.Columns.Add("OSex", typeof(System.String)); dt.Columns.Add("OPhone", typeof(System.String)); dt.Columns.Add("OXueLi", typeof(System.String)); dt.Columns.Add("OAge", typeof(System.String)); dt.Columns.Add("OAddress", typeof(System.String)); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow dr = dt.NewRow(); dr["RTime"] = ds.Tables[0].Rows[i]["RTime"].ToString(); dr["Result"] = ds.Tables[0].Rows[i]["Result"].ToString(); dr["OName"] = ds.Tables[0].Rows[i]["OName"].ToString(); dr["OSex"] = ds.Tables[0].Rows[i]["OSex"].ToString(); dr["OPhone"] = ds.Tables[0].Rows[i]["OPhone"].ToString(); dr["OXueLi"] = ds.Tables[0].Rows[i]["OXueLi"].ToString(); dr["OAge"] = ds.Tables[0].Rows[i]["OAge"].ToString(); dr["OAddress"] = ds.Tables[0].Rows[i]["OAddress"].ToString(); dt.Rows.Add(dr); } //调用导出 ExportExcel(dt, "导出数据:全对答题名单", "全对答题名单"); } else { ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "", "yz('没有数据,无法导出',1);", true); return; } } #region 导出数据 /// <summary> /// DataTable导出Excel /// </summary> /// <param name="dt">datatable数据源</param> /// <param name="strFileName">文件名</param> /// <param name="strSheetName">工作簿名</param> public void ExportExcel(DataTable dt, string strFileName, string strSheetName) { HSSFWorkbook book = new HSSFWorkbook(); ISheet sheet = book.CreateSheet(strSheetName); IRow headerrow = sheet.CreateRow(0); ICellStyle style = book.CreateCellStyle(); style.Alignment = HorizontalAlignment.Center; style.VerticalAlignment = VerticalAlignment.Center; HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0); string strColumns = "答题时间,答对,姓名,性别,手机,职业,年龄,区域"; string[] strArry = strColumns.Split(','); for (int i = 0; i < strArry.Length; i++) { dataRow.CreateCell(i).SetCellValue(strArry[i]); dataRow.GetCell(i).CellStyle = style; } for (int i = 0; i < dt.Rows.Count; i++) { dataRow = (HSSFRow)sheet.CreateRow(i + 1); for (int j = 0; j < dt.Columns.Count; j++) { string ValueType = ""; string Value = ""; if (dt.Rows[i][j].ToString() != null) { ValueType = dt.Rows[i][j].GetType().ToString(); Value = dt.Rows[i][j].ToString(); } switch (ValueType) { case "System.String"://字符串类型 dataRow.CreateCell(j).SetCellValue(Value); break; case "System.DateTime"://日期类型 System.DateTime dateV; System.DateTime.TryParse(Value, out dateV); dataRow.CreateCell(j).SetCellValue(dateV); break; case "System.Boolean"://布尔型 bool boolV = false; bool.TryParse(Value, out boolV); dataRow.CreateCell(j).SetCellValue(boolV); break; case "System.Int16"://整型 case "System.Int32": case "System.Int64": case "System.Byte": int intV = 0; int.TryParse(Value, out intV); dataRow.CreateCell(j).SetCellValue(intV); break; case "System.Decimal"://浮点型 case "System.Double": double doubV = 0; double.TryParse(Value, out doubV); dataRow.CreateCell(j).SetCellValue(doubV); break; case "System.DBNull"://空值处理 dataRow.CreateCell(j).SetCellValue(""); break; default: dataRow.CreateCell(j).SetCellValue(""); break; } dataRow.GetCell(j).CellStyle = style; //设置宽度 sheet.SetColumnWidth(j, (Value.Length + 10) * 256); } } MemoryStream ms = new MemoryStream(); book.Write(ms); Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8))); Response.BinaryWrite(ms.ToArray()); Response.End(); book = null; ms.Close(); ms.Dispose(); } #endregion
原文地址:https://www.cnblogs.com/chenlihong-886/p/12922047.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 「二八法则」的数据可视化:用帕累托图进行数据分析
- dubbo(三)服务运行容器Container
- python实现抓取web和xcx数据推送到wx和邮件
- 如何快速识别项目水平?
- 亲测有效 | OpenVINO支持ONNX格式文件直接读取了
- 【自动化测试】【Jest-Selenium】(01)—— Jest 入门
- 设计模式:原型模式
- 后端逆袭,一份不可多得的PHP学习指南
- 走进Java接口测试之工具类库 Hutool
- Go开源游戏服务器框架——Pitaya
- 性能分析之pidstat新版本的%wait和mpstat的%iowait、top的wa
- 走进Java接口测试之整合ELK实现日志收集
- 【一天一大 lee】 监控二叉树 (难度:困难)-Day20200922
- 网络学习笔记2——物理层基础(信号与系统)(未完待续)
- 浅谈 React 中的 XSS 攻击