将Excel转换为JSON数组以上传到SQL Server

时间:2018-07-11 22:57:36

标签: json sql-server excel vb.net

我有一个Excel电子表格,其中有几列设置为货币格式。我将电子表格转换为JSON,如下所示:

[{"Date":"5/31/18","Project ID":"2070","Project Description":"Director's Program","Beginning Balance":"$0.00 ","Adjustments":"$0.00 ","Net Change":"$0.00 ","Ending Balance":"$0.00 "},{"Date":"5/31/18","Project ID":"2327","Project Description":"Bone Marrow Transplant","Beginning Balance":"$3,053.84 ","Adjustments":"$0.00 ","Net Change":"$117.89 ","Ending Balance":"$3,171.73 "}

在VB.NET Web服务(ASMX)中使用

      Dim JObject = JsonConvert.DeserializeObject(Of Resultslist())(JSONString)

我将字符串发送到具有将其更改为类的类的Web服务

<JsonProperty(PropertyName:="Beginning Balance")>
Public Property Beginning() As Decimal  

我想要做的是将其发送到存储过程,但是将字符串转换为小数时出现错误

    command.Parameters.Add("@Beginniing", SqlDbType.Money).Value = JObject(i).Beginning

SQL Server数据库中的数据类型为Money。因此Excel将其称为Currency,JSON希望将其设为字符串,Web服务为小数,数据库为Money。我对Excel电子表格的访问权限有限,如果这是唯一的手段,也许可以更改数据类型,但如果可能的话,我想避免这样做。

我应该把所有东西都串起来然后用手指交叉吗?哎呀,谢谢-

1 个答案:

答案 0 :(得分:2)

如果您删除了货币符号,它可能会正常工作而不会出错(这确实有助于在问题中发布实际错误)

command
.Parameters
.Add("@Beginniing", SqlDbType.Money)
.Value = JObject(i).Beginning.Replace("$","");

尽管您总是会遇到将excel作为源的麻烦-它是一种邀请无效数据的格式。