在Excel工作表中存储数值

时间:2016-09-26 15:59:16

标签: vb.net excel oledb

在Excel工作表中保存数值时遇到问题。当我执行插入或更新涉及数值的查询时,VB.NET将传输到工作表,就好像它们是文本...我不希望这样。我用vb.net插入数字的单元格用绿色框突出显示,表示该值存储为文本而不是数字:

enter image description here

我尝试使用以下行插入数字,但仍保持原样:

comando.Parameters.Add("?", OleDbType.Numeric).Value = Val(dato)

如何让vb.net将其保存为数字而不是文本?

编辑:有人将我的问题标记为可能重复。另一个链接的问题使用COM / INTEROP ...我没有使用它,我正在使用OLE DB。我只是想知道是否有任何方法可以在Excel上存储数字而不将其保存为文本。

3 个答案:

答案 0 :(得分:0)

您可以随时尝试格式化单元格

 Dim formatRange As Excel.Range
 formatRange = xlWorkSheet.Range("a1", "b1")
 formatRange.NumberFormat = "#,###,###"
 xlWorkSheet.Cells(1, 1) = "1234567890"

 Dim shXL As Excel.Worksheet
 Dim temp As String
 temp = "B" & (VariableYouAreEntering.Count + 1)
 With shXL.Range("B1", temp)
    .NumberFormat = "000000" 'or however you want to format it
 End With

答案 1 :(得分:0)

尝试转换为double:

CDbl(vaL(dato))

或仅CDbl(dato) - 在评论建议之后。

以下是链接:Convert String to Double - VB您可以尝试其他方式。

答案 2 :(得分:0)

我会尝试这个

Dim dato As String = "123.45" 
Dim value As Double

If Double.TryParse(dato, value) Then
    comando.Parameters.Add("?", OleDbType.Numeric).Value = value
Else
    comando.Parameters.Add("?", OleDbType.Numeric).Value = 0
End If

另外,我会尝试comando.Parameters.AddWithValue("?",value)

你会和我们分享你的comando CommandText吗?