使用C#中的非数字数据更新Excel单元格

时间:2010-03-24 05:28:25

标签: c# sql excel oledb

我的查询是

ExcelQuery = "Update [Sheet1$] "
               +"set CITIZEN_ID = #" + value 
               + " where CITIZEN_ID = " + value; 

正如您所看到的,我基本上只是在CITIZEN_ID字段前加上“#”。 value是一个int / numeric值。因此,如果我在CITIZEN_ID列中有“256”,它将被转换为“#256”

当我执行此操作时,我得到一个OleDbException Syntax error in date in query expression所以我用这样的单引号包围了部分查询,

ExcelQuery = "Update [Sheet1$] "
               +"set CITIZEN_ID = '#" + value + "' "
               +"where CITIZEN_ID = " + value; 

这次我得到了另一个OleDbException,Data type mismatch in criteria expression.

我猜测由于某种原因,CITIZEN_ID字段除了普通数字之外不想采取任何其他内容。我有什么方法可以解决这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您不能只更改数字格式,以便在CITIZEN_ID字段中的每个数字前显示“#”。

这并不能解决你所说的问题..但它避免了: - )

<强>更新 StackOverflow问题(excel-cell-formatting)讨论了使用C#

的单元格格式

答案 1 :(得分:1)

听起来您正在尝试使用SQL INSERT将文本值放入DBMS(Access数据库引擎)视为DOUBLE FLOAT的列中,从而导致类型不匹配错误。您可以更改注册表值以说服引擎将列视为文本,请参阅:

External Data - Mixed Data Types