2013-04-20 110 views
0

我有一个Excel文件(.xls),它有大约1400行,有行显示在正确的字体(都在工作表单元格和公式框中停靠在顶部)。但是,有些行在工作表单元格中以右字体显示,但如果选择它并查看公式框,则会以错误的字体(某种错误或不支持的字体)显示所选行的文本。Excel公式框中的字体错误?

我的excel文件的内容包含unicode文本,我的笔记本电脑安装了最常见的unicode字体(简单地说,我的语言需要unicode才能正常显示,而且我总是会安装很多unicode字体)。我使用的是Excel 2013,但我不认为这个问题与丢失字体有关......也许公式框和表格单元格使用不同的字体。值得注意的一点是,在公式框(我称这些单元格为B组单元格)中,其内容以错误字体显示的所有单元格都使用与其他单元格不同的字体格式(我称为这些A组单元格)。我尝试将B组单元格的字体更改为A组单元格的字体,但是它们的内容随后以错误的字体(在单元格和公式框中)显示。

如果每项工作只处理Excel文件,没有大问题,但是我有一个项目必须将此Excel文件导入数据库。我尝试了一个演示,并加载了带有大量字体错误的Excel文件。这些错误与我在Excel窗口中看到的公式框中显示的内容完全相同。我不知道如何解决这个问题。问题是客户假设Excel文件是好的,它看起来像这样(因为单元格的内容在单元格中显示为OK,错误只在公式框中)。我没有任何理由要求客户另一个Excel文件。

我正在使用NPOI来读取Excel文件,我认为它读取单元格的内容与公式框读取的方式相同,我已经尝试在读取它的字符串之前为每一行应用正确的字体,但它没有' t似乎工作。你对此有任何想法吗?我只是需要一些建议,不希望有完整或完美的解决方案(我知道这并不容易)?我的第一个想法是首先尝试在Excel窗口的公式框中使用正确/正确的字体显示单元格的内容,然后尝试使用具有NPOI(或另一个lib)的代码执行此操作,然后正常导入Excel文件,I希望有一个更简单的解决方案,它在读取单元格时正确提取内容(使用正确的字体)。

你的建议可以帮助我解决这个问题。谢谢!

============================================== =============

更新与样本xls文件xls file

+0

听起来像你所发现的是,Excel未用于传输和存储数据的很好的培养基。在任何情况下,请提供一些与您的问题有关的例子,包括Dropbox上的XLS文件,其中包含一些有问题的数据。我猜你有一些**双字节的**字符或其他特殊字符引起问题,但无法看到,我真的不知道。 – 2013-04-20 13:13:52

+0

我不认为这是Excel的错误。我发现单元格文本/值将从它的公式延迟,所有格式和样式将稍后应用于单元格的文本/值,这就是为什么文本在单元格中显示“正常”(使用正确的字体),而公式显示错误。不过,我不明白为什么会发生这种情况,我的意思是在单元格文本和单元格公式之间存在一些同步问题。谢谢。 – 2013-04-20 13:38:32

+0

除了试图描述什么是或者你认为发生了什么之外,请上传文件的例子并确定一些有问题的单元。没有人在这里是pyschic。 – 2013-04-20 13:48:20

回答

0

我使用Excel 2010在Win 7 64B。

我没有安装.VnTime字体,但感谢你的截图我看到你所看到的,并似乎有什么细胞显示(字体格式的文本),什么公式栏显示之间的一些脱节。不知何故,这会影响您的应用程序读取单元值的方式。

在大多数情况下,只将cell作为范围对象是安全的。

您可以尝试将

三个方法可以改变你的代码读取:

  • cell.Formula,或
  • cell.Text,或者
  • cell.Value

一个潜在的问题是,格式化可能对Excel来说是唯一的,所以如果底层字符集不被应用程序,数据库或客户端系统所支持ms/computers,这种不匹配错误可能会持续。

可能会有一些附加信息(尽管所属大多数点&日期格式)位置:

http://blogs.office.com/b/microsoft-excel/archive/2007/11/12/manipulating-and-massaging-data-in-excel.aspx

+0

谢谢,恐怕你的解决方案不能测试,因为我只使用NPOI,我不知道其他库,但与NPOI,我已经尝试了所有这些:单元格。 StringCellValue,Cell.ToString(),Cell.RichStringCellValue,但都给出了相同的结果。我知道单元格的值是以不同的方式编码的(它被称为TCVN3),而在用Unicode编码时,它们只会以我最喜欢的字体正确显示。我的解决方案是将这些值转换为Unicode版本,它的工作原理... – 2013-04-20 23:40:24

+0

...但新问题是除TCVN3和Unicode之外还有其他编码类型,我正在寻找如何知道单元格的编码名称并应用相应的转换。感谢帮助。 – 2013-04-20 23:40:48