DataTable 更改在有数据列的类型方法+DataTable 导出excel功能
/// <summary>
/// 导出功能
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btn_export_Click(object sender, EventArgs e)
{
try
{
string strSql = CreateStrWhere();
DataTable dst = ShDonBLL.GetListForEXport(strSql).Tables[];
if (dst.Rows.Count<=)
{
Jscript.Alert(this, "查询数据为空,没有数据导出,请重新选择条件!");
return;
}
DataTable ds = UpdateDataTable(dst);
for (int i = ; i < ds.Rows.Count; i++)
{
DataColumn dc = ds.Columns[];//i就是第几列或者用列名也可以
dc.DataType = typeof(String);
string eid = ds.Rows[i]["装置名称"].ToString();
string tyid = ds.Rows[i]["类别"].ToString();
if (!string.IsNullOrEmpty(eid))
{
ds.Rows[i]["装置名称"] = GetEqui(eid);
}
if (!string.IsNullOrEmpty(tyid))
{
ds.Rows[i]["类别"] = GetZG(tyid);
}
}
//DataTableExcel(ds,"测试0",""); }
catch (Exception ex)
{ throw ex;
}
}
/// <summary>
/// 修改数据表DataTable某一列的类型和记录值(正确步骤:1.克隆表结构,2.修改列类型,3.修改记录值,4.返回希望的结果)
/// </summary>
/// <param name="argDataTable">数据表DataTable</param>
/// <returns>数据表DataTable</returns> private DataTable UpdateDataTable(DataTable argDataTable)
{
DataTable dtResult = new DataTable();
//克隆表结构
dtResult = argDataTable.Clone();
foreach (DataColumn col in dtResult.Columns)
{
if (col.ColumnName == "装置名称" || col.ColumnName == "类别")
{
//修改列类型
col.DataType = typeof(String);
}
}
foreach (DataRow row in argDataTable.Rows)
{
DataRow rowNew = dtResult.NewRow();
rowNew["序号"] = row["序号"];
rowNew["装置名称"] = row["装置名称"];
rowNew["停工时间"] = row["停工时间"];
rowNew["开工时间"] = row["开工时间"];
rowNew["正常时间"] = row["正常时间"];
rowNew["停工原因"] = row["停工原因"];
rowNew["类别"] = row["类别"];
rowNew["停工时间小时"] = row["停工时间小时"];
rowNew["年度"] = row["年度"];
dtResult.Rows.Add(rowNew);
}
return dtResult;
} #region DataTable导出到Excel
/// <summary>
/// DataTable导出到Excel
/// </summary>
/// <param name="pData">DataTable</param>
/// <param name="pFileName">导出文件名</param>
/// <param name="pHeader">导出标题以|分割</param>
public static void DataTableExcel(System.Data.DataTable pData, string pFileName, string pHeader)
{
System.Web.UI.WebControls.DataGrid dgExport = null;
// 当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
if (pData != null)
{
string UserAgent = curContext.Request.ServerVariables["http_user_agent"].ToLower();
if (UserAgent.IndexOf("firefox") == -)//火狐浏览器
pFileName = HttpUtility.UrlEncode(pFileName, System.Text.Encoding.UTF8);
curContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + pFileName + ".xls");
curContext.Response.ContentType = "application/vnd.ms-excel";
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
// 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
dgExport = new System.Web.UI.WebControls.DataGrid();
dgExport.DataSource = pData.DefaultView;
dgExport.AllowPaging = false;
dgExport.ShowHeader = true;//显示标题
dgExport.DataBind();
string[] arrHeader = pHeader.Split('|');
string strHeader = "<table border=\"1\" style=\"background-color:Gray;font-weight:bold;\"><tr>";
foreach (string j in arrHeader)
{
strHeader += "<td>" + j.ToString() + "</td>";
}
strHeader += "</tr></table>";
// 返回客户端
dgExport.RenderControl(htmlWriter);
string strMeta = "<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=UTF-8\"/>";
curContext.Response.Write(strMeta + strHeader + strWriter.ToString());
curContext.Response.End();
}
}
DataTable 更改在有数据列的类型方法+DataTable 导出excel功能的更多相关文章
- DataTable 更改在有数据列的类型方法
原文:DataTable 更改在有数据列的类型方法 /// <summary> /// 修改数据表DataTable某一列的类型和记录值(正确步骤:1.克隆表结构,2.修改列类型,3.修改 ...
- 【转载】C#如何往DataTable中新增一个数据列
在C#中的Datatable数据变量的操作过程中,有时候我们需要往现有的DataTable中新增一个自定义数据列,该列在原有的DataTable变量中并不存在,属于用户手工自定义新增的数据列,在往Da ...
- SQL点滴4—筛选数据列的类型,字段大小,是否可为空,是否是主键,约束等等信息
原文:SQL点滴4-筛选数据列的类型,字段大小,是否可为空,是否是主键,约束等等信息 项目需要将Access数据库中的数据导入到SQL Server中,需要检验导入后的数据完整性,数据值是否正确.我们 ...
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- vue将指定区域的表格数据或element-ui中el-table的数据单笔或多笔批量导出excel
公司在后台管理系统开发中用到了 vue+element-ui 组合的框架,但随着需求的越来越复杂,前端的工作难度也呈几何倍数递增,工作量随之增大.这不,在项目中增加一个将列表数据导出为excel的需求 ...
- springboot实现数据库中数据导出Excel功能
[转载]原文地址:https://blog.csdn.net/wilson_m/article/details/79021458 功能介绍 网上查找了一堆的数据导出代码,可能是自己基础比较薄弱的原因还 ...
- 项目笔记:导出Excel功能设置导出数据样式
/** * 导出-新导出 * * @return * @throws IOException */ @OperateLogAnn(type = OperateEnum.EXPORT, hibInter ...
- 线程系列07,使用lock语句块或Interlocked类型方法保证自增变量的数据同步
假设多个线程共享一个静态变量,如果让每个线程都执行相同的方法每次让静态变量自增1,这样的做法线程安全吗?能保证自增变量数据同步吗?本篇体验使用lock语句块和Interlocked类型方法保证自增变量 ...
- C# 使用Epplus导出Excel [2]:导出动态列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
随机推荐
- VB.NET读取Excel工作表信息
Dim dt As DataTable = ExcelConn.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, Nothing)
- module中build.gradle文件参数含义
主要是module的build.gradle,截图如下: 01行:apply plugin: 'com.android.application' 表示该module是这个应用程序的module ...
- github 仓库管理
一.远程仓库有master和dev分支1. 克隆代码 git clone https://github.com/master-dev.git # 这个git路径是无效的,示例而已 2. 查看所有分支 ...
- link,unlink,remove, rename函数
link函数:创建一个指向现有文件的链接的方法是使用 个人理解为cp命令 #include <unistd.h> int link( const char *existingpath, c ...
- tomee 系列问题
1. remote client 无法建立连接 修改system.properties # allowed packages to be deserialized, by security we de ...
- python 之 theano学习:
(1)theano主要支持符号矩阵表达式 (2)theano与numpy中都有broadcasting:numpy中是动态的,而theano需要在这之前就知道是哪维需要被广播.针对不同类型的数据给出如 ...
- 兼容ie8 rgba()用法 滤镜filter的用法
原文 http://blog.csdn.net/westernranger/article/details/40836861 今天遇到了一个问题,要在一个页面中设置一个半透明的白色div.这个貌似不 ...
- ZooKeeper 3.5.0 分布式配置问题
ZooKeeper 3.5.0 分布式配置好后,执行./zkServer.sh start 命令启动,报如下错误: 2015-07-02 21:06:01,671 [myid:] - INFO [ma ...
- 冲刺阶段 day5
day5 项目进展 今天我们组的成员聚在一起进行了讨论,首先我们继续编写了学生管理这部分的代码,然后负责数据库的同学完成了数据库的部分,最后进行了学生管理这部分的代码复审 存在问题 因为代码不是一天之 ...
- Marbles启动信息
body-parser deprecated undefined extended: provide extended option app.js:40:20 -------------------- ...