DataSet仅显示名称而不显示表数据c#

时间:2014-04-24 15:46:37

标签: c#

在我的c#代码中,我正在尝试使用我的数据创建一个excel报告。我正在尝试某种方式来提供我的数据标题。所以我调用我的存储过程添加了我的数据集表,现在我想将其中一个表添加到我的数据表中的一行。它返回我的数据集所做的一行。我希望它看起来的例子:

Title
93.76%  00:23:59    00:33:41    95.56%  00:57:40    94.66%

看起来很简单,这就是为什么我选择数据表来执行此操作而不是数据集,因为我仅限于数据集表格式。如何让我的数据表显示数据而不是名称?代码如下。我也对如何实现这一点提出任何其他建议。如果您需要更多信息或代码,请随时询问。

var dt = new DataTable("IncomingProductReport");
dt.Columns.Add("A Line Down Time");

SqlCommand cmd = new SqlCommand("L_GetTimeTotals", conn);
cmd.Parameters.Add("@startTime", SqlDbType.DateTime, 30).Value = RadDateTimePicker2.SelectedDate;
cmd.Parameters.Add("@endTime", SqlDbType.DateTime, 30).Value = RadDateTimePicker3.SelectedDate;
cmd.CommandType = CommandType.StoredProcedure;

SqlDataAdapter da = new SqlDataAdapter(cmd);

var ds = new DataSet();

ds.Tables.Add("IncomingProductTotals");
ds.Tables.Add("IncomingProductTotalsA");
ds.Tables.Add("IncomingProductTotalsB");
ds.Tables.Add("IncomingProductTotals1");
ds.Tables.Add("IncomingProductTotalsA1");
ds.Tables.Add("IncomingProductTotalsB1");

da.TableMappings.Add("Table", "IncomingProductTotals");
da.TableMappings.Add("Table1", "IncomingProductTotalsA");
da.TableMappings.Add("Table2", "IncomingProductTotalsB");
da.TableMappings.Add("Table3", "IncomingProductTotals1");
da.TableMappings.Add("Table4", "IncomingProductTotalsA1");
da.TableMappings.Add("Table5", "IncomingProductTotalsB1");

da.Fill(ds);

ds.Tables.Remove("IncomingProductTotalsA");
ds.Tables.Remove("IncomingProductTotalsB");
ds.Tables.Remove("IncomingProductTotalsA1");
ds.Tables.Remove("IncomingProductTotalsB1");

dt.Rows.Add("Line 1 Totals");
dt.Rows.Add(ds.Tables["IncomingProductTotals"]);
dt.Rows.Add("Line 2 Totals");
dt.Rows.Add(ds.Tables["IncomingProductTotals1"]);

ExcelHelper.ToExcel(dt, "DownTimeTotals.xls", Page.Response);

1 个答案:

答案 0 :(得分:1)

  

dt.Columns.Add(" A Line Down Time");

您正在向DataTable添加一列。你没有说什么类型,所以它将是默认类型,这是字符串。

dt.Rows.Add(ds.Tables["IncomingProductTotals"]);

然后,您尝试将完整的DataTable放入需要字符串的Column的单元格中。要从给定对象获取字符串,系统将调用DataTable的ToString方法。并且ToString实现为返回DataTable的Tablename。

您需要将DataTable中的数据放入dt DataTable而不是DataTables本身。这是没有意义的。如果您真的想将DataTable放入DataTable,那么列的允许类型只是曾经描述过的here