2010-03-24 86 views
1

我有一个查询是更新Excel单元格非数值数据在C#

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

正如你所看到的,我基本上只是在前面加上一个“#”到CITIZEN_ID领域。值是一个整数/数值。所以,如果我在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领域不想采取任何除了普通的数字。有什么办法可以弥补这一点,以获得英镑符号?

谢谢!

回答

1

难道你不能只改变数字格式,因此它在CITIZEN_ID字段中的每个数字之前显示'#'。

这没有解决您的所述问题..但它避免它:-)

更新: 这个StackOverflow的问题(excel-cell-formatting)关于使用单元格格式的C#会谈

+0

我想是这样。我将如何通过编程来解决这个问题? – 2010-03-24 06:03:51

+0

我只从Perl完成了这个任务。你需要做的是改变单元格的格式。将有一个API来做到这一点! – lexu 2010-03-24 06:18:00

+0

我会弄清楚它。谢谢! – 2010-03-24 07:31:54

1

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

External Data - Mixed Data Types

+0

谢谢,我来看看! – 2010-03-25 11:32:41

相关问题