【发布时间】:2013-11-25 10:23:24
【问题描述】:
在尝试通过 VB.NET 将我的表从 Access 导出到 Excel 时,我希望 TRUE 和 FALSE 值在我的 Excel 工作表中显示为 1 和 0。下面是我在excel中导出和写入数据的代码。
If(.Cells(d, e).value = True, 1, 0) 抛出错误“conversion from type string to Boolean is not valid”。我想这是因为我的 Access 表中也有“字符串”数据。有人可以帮忙吗?
Dim e As Integer = 1
For col = 0 To ComDset2.Tables(0).Columns.Count - 1
d = 2
For row = 0 To ComDset2.Tables(0).Rows.Count - 1
.Cells(d, e).Value = ComDset2.Tables(0).Rows(row).ItemArray(col)
IIf(.Cells(d, e).value = True, 1, 0)
d += 1
Next
e += 1
Next
【问题讨论】:
-
IIf(.Cells(d, e).value = True, 1, 0)行假定单元格值为Boolean类型,但情况并非如此(Excel 单元格始终为String)。避免此问题的方法是将单元格视为字符串 (IIf(.Cells(d, e).value.ToString().ToLower() = "true", 1, 0)) 或将单元格转换为Boolean(例如,通过Convert.ToBoolean;尽管它会触发任何非布尔值的错误,但即,与True、False或Integer不同的任何东西。或者,您可能会依赖不同的方法(如答案所建议的那样)。