我正在编写一个将简单数据库与Excel工作表同步的工具。数据库表中的每个项目对应于工作表中的一行。我使用C#和Excel interop com界面将Excel工作表读入工具,然后在同步后比较项目的值(即Excel工作表中的一列),以确保它们相等
昨天我发现了一个比较不正确的案例:
“<;MedalTitle>;<;MedalDescription>;”
“<;医学描述>;'奖章-<;医学描述>;”
第二个是我从Excel中读到的,你可以看到它跳过了第一个撇号。有没有办法告诉Excel将单元格视为文本(没有,只是设置单元格格式没有帮助)
我甚至尝试在VBA中复制单元格的值(‘hello’),如下所示:
私有子工作表\u双击之前(ByVal目标作为范围,Cancel作为布尔值)
Target.Offset(1,0).Value=Target.Worksheet.Range(“b2”).Value
Target.Offset(2,0).Value=Target.Worksheet.Range(“b2”).公式
Target.Offset(3,0).Formula=Target.Worksheet.Range(“b2”).Formula
Target.Offset(4,0).Formula=Target.Worksheet.Range(“b2”).Value
端接头
结果是目标单元格的值总是hello’
如果没有办法,我将不得不做一些丑陋的事情,比如
if(dbitem.value[0]='')
{
//东西
}
其他的
{
//定期比较
}
恐怕撇号“是Excel中的一个特殊字符,当它作为您找到的单元格中的第一个字符出现时。它告诉Excel将字符串的其余部分视为文本,这样您就可以在单元格中输入类似于'34.2的内容,并将其视为字符串而不是数字(用于格式化等)
我建议做一些与您建议的类似的事情,只是在将其放入Excel的地方,检查第一个字符,并添加一个额外的,,如果已经有了
或者,您可以在所有值前面加一个撇号——如果您希望它们都是文本的话。这样你就不需要额外的第一个字符检查了