【问题标题】:OLEDB excel insert unwanted character( ' )OLEDB excel插入不需要的字符(')
【发布时间】:2012-09-08 08:55:56
【问题描述】:

在 Excel 公式栏中插入后,我得到了不需要的字符 ',这限制了日期等字段类型以特定格式转换

query="INSERT INTO [book$] ([Book Name]) VALUES ('" + txtbookname.Text +"')";

插入后该值为字符串类型

例如:如果我在 excel 单元格中插入了I AM,它将是相同的。

但是当转到 edit 那个单元格时,它会显示'I AM。我不想在开始时使用 ' 字符

【问题讨论】:

  • 问题到底是什么?
  • 单引号是在 Excel 单元格中显示,还是在单元格处于活动状态时仅显示在地址栏中?
  • 为了防止打字困难和注入漏洞,我建议使用 OleDb 的内置准备语句功能 (IIRC)。这样可以更轻松地正确组装 SQL 语句,同时指定值的类型
  • @DavidW 这是“单元格编辑字段”(按 F2)。地址栏适用于浏览器。
  • @sehe 但是,令人惊讶的是,你明白我的意思,不是吗?天啊,这里有些人只见树木不见森林。

标签: c# excel odbc oledb insert-update


【解决方案1】:

'(就像你几乎说的那样)表示单元格属于文本类型。

简而言之,对于文本值,不要担心:这只是 Excel 表示“这是文本内容,而不是公式或任何东西”的方式。无论如何它都不会出现。 (历史记录:我相信这个约定源于最初的 Lotus 123 兼容性,如果没记错的话)。

这是为了防止出错(想象一下,如果您插入文本=3*7,它应该被解释为公式吗?)。

现在,我以前没有将 Excel 与 OleDB 提供程序一起使用,但我几乎可以肯定,您可以通过实际插入日期(或数字,或...)而不是字符串值来获得所需的效果.例如:

INSERT INTO [book$] ([Copies]) VALUES (42)

将插入单元格内容42

INSERT INTO [book$] ([Copies]) VALUES ('42')

将插入单元格内容'42

【讨论】:

  • @user3600403 也许,就像我说的,我没有使用 Excel。你碰巧有什么值得分享的吗?您的说法并不十分清楚(事实上,'123' 是不同的,所以您可能的意思是您在在特定情况下看不到不同的结果。此外,我们无法猜测那种情况,你有没有尝试过别的方法,比如'''123' 来编码'123 的单元格值?)
  • 我写了一个简单的 VBA 宏来修复它并将它重命名为 .xlsm。不是一个漂亮的解决方案,但没关系
猜你喜欢
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多