如何让Excel在单元格的开头忽略撇号

Sre*_*kel 10 import excel interop apostrophe

我正在编写一个将简单数据库与Excel工作表同步的工具.数据库中表中的每个项对应于工作表中的一行.我使用C#和Excel interop com接口将Excel工作表读入工具,然后在同步后比较项目的值(即excel表中的一列),以确保它们相等.

昨天我发现了一个比较不正确的案例:

"'<MedalTitle>' Medal - <MedalDescription>"
"<MedalTitle>' Medal - <MedalDescription>"
Run Code Online (Sandbox Code Playgroud)

第二个是我从Excel中读到的那个,你可以看到它跳过了第一个撇号.有没有办法告诉Excel将单元格视为文本(不,只是设置单元格的格式没有帮助)?

我甚至试图在VBA中复制单元格的值('hello'),如下所示:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   Target.Offset(1, 0).Value = Target.Worksheet.Range("b2").Value
   Target.Offset(2, 0).Value = Target.Worksheet.Range("b2").Formula
   Target.Offset(3, 0).Formula = Target.Worksheet.Range("b2").Formula
   Target.Offset(4, 0).Formula = Target.Worksheet.Range("b2").Value
End Sub
Run Code Online (Sandbox Code Playgroud)

结果是目标细胞的价值总是你好'

如果没有办法,我将不得不做一些丑陋的事情

if (dbitem.value[0] == ''' )
{
   // stuff
}
else
{
   // regular comparison
}
Run Code Online (Sandbox Code Playgroud)

Ant*_*Ant 10

我担心撇号'是Excel中的一个特殊字符,当它出现在你发现的单元格中的第一个字符时.它告诉Excel将字符串的其余部分视为文本,以便您可以'34.2在单元格中输入类似内容,并将其视为字符串而不是数字(用于格式化等).

我建议做一些类似于你建议的事情,除了你把它放到Excel中,检查第一个字符,'如果已经存在一个字符,则添加一个额外字符.

或者,您可以将撇号添加到所有值 - 如果您希望它们全部为文本.这样你就不需要额外的第一个字符检查了.