【问题标题】:Not able to get column datatype无法获取列数据类型
【发布时间】:2017-08-08 01:32:31
【问题描述】:

我正在尝试遍历以下代码以查找 DateTime 列。我无法让代码工作。我错过了什么吗?谢谢。

dGrid.DataSource = dSets.Tables(0)
dGrid.DataBind()
ws.Cells(1, 1).LoadFromDataTable(dGrid.DataSource, True)
For i As Byte = 1 To dGrid.Columns.Count
    If dSets.Tables(0).Columns(i).DataType Is GetType(DateTime) Then
        ws.Column(i).Style.Numberformat.Format = "mm/dd/yyyy hh:mm"
    End If
Next

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition"; attachment)
Response.Charset = ""

【问题讨论】:

  • 我错过了什么吗?是的,您缺少对问题的描述。不起作用不是正确的描述。也就是说,Office 集合索引通常从 1 开始,而 .Net 集合索引从 0 开始。
  • 您好 TnTinMn,很抱歉没有对我试图让我的代码完成的内容更具描述性。只是我试图让我的代码遍历每一列以找到 DateTime 数据类型的代码。如果该类型存在,则转换数据值以反映 mm/dd/yy hh:ss 格式....我尝试将索引设置为 0 或 1,但数据值保持原始状态而不更改为所需的格式。谢谢!

标签: asp.net excel vb.net epplus


【解决方案1】:

差不多了,但需要进行以下更改:

  1. DataSource 获取列数。
  2. 修复集合索引。

测试和工作:

dataGrid.DataSource = dataSet.Tables(0)
dataGrid.DataBind()
ws.Cells(1, 1).LoadFromDataTable(dataGrid.DataSource, True)
Dim data = dataGrid.DataSource
' get column count from DataSource: dGrid.Columns.Count is 0
Dim columnCount = data.Columns.Count
For i = 0 To columnCount - 1
    If data.Columns(i).DataType Is GetType(DateTime) Then
        ws.Column(i + 1).Style.Numberformat.Format = "mm/dd/yyyy hh:mm"
    End If
Next

【讨论】:

  • 酷神博您好,感谢您的回复。我认为你的改变会奏效,值得称赞。我仍然无法让我的工作。我缩小了实际问题的范围。 DateTime 可能始终不是正确的数据类型。我有机会查看这些数据。该特定列是十进制/双精度。我将不得不将其转换为 DateTime。希望这能回到正轨。谢谢!
  • @ChungLee - 你是对的。当您设置Style.Numberformat.Format 时,它只会在数据类型为DateTime 时起作用。
【解决方案2】:

试试

For i As Byte = 1 To dGrid.Columns.Count
    If dt.Columns[i].DataType Is GetType(DateTime) Then
        ws.Column(i).Style.Numberformat.Format = "mm/dd/yyyy hh:mm"
    End If
Next

【讨论】:

  • 感谢您的回复,TonyW。它给了我两个错误,“类型值不能转换为布尔值”和“预期语句结束”。
  • 试试这个 --- ws.Column(i).DefaultCellStyle.Format = "mm/dd/yyyy hh:mm""
  • 您好 codeMonger123,我收到“DefaultCellStyle 不是 OfficeOpenXML.ExcelColumn 的成员”错误。
猜你喜欢
  • 1970-01-01
  • 2012-06-16
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-31
  • 2013-02-28
  • 2019-05-06
相关资源
最近更新 更多