在我的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);
答案 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。