C# Excel公式框中的字体错误?

C# Excel公式框中的字体错误?,c#,excel,excel-formula,export-to-excel,npoi,C#,Excel,Excel Formula,Export To Excel,Npoi,我有一个Excel文件(.xls),它大约有1400行,有行以正确的字体显示(在表格单元格和固定在顶部的公式框中)。但是,有些行在工作表单元格中以正确的字体显示,但是如果我选择它并查看公式框,它会以错误的字体显示所选行的文本(某种错误或不支持的字体) 我的excel文件的内容包含unicode文本,我的笔记本电脑安装了最常见的unicode字体(只是我的语言需要unicode才能正确显示,我总是安装了许多unicode字体)。我正在使用Excel 2013,但我不认为问题与缺少字体有关。。。可能

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

我的excel文件的内容包含unicode文本,我的笔记本电脑安装了最常见的unicode字体(只是我的语言需要unicode才能正确显示,我总是安装了许多unicode字体)。我正在使用Excel 2013,但我不认为问题与缺少字体有关。。。可能公式框和工作表单元格使用不同的字体。值得注意的一点是,所有在公式框中以错误字体显示内容的单元格(我称这些单元格为B组单元格)的格式与其他单元格(我称这些A组单元格)的格式不同。我曾尝试将B组单元格的字体更改为A组单元格的字体,但它们的内容显示时使用了错误的字体(在单元格和公式框中)

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

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

你的建议对我解决这个问题会有很大帮助。谢谢

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


使用示例xls文件更新我正在Win 7 64b上使用Excel 2010

我没有安装.VnTime字体,但由于您的屏幕截图,我看到了您看到的内容,并且在单元格显示的内容(字体格式的文本)和公式栏显示的内容之间似乎存在一些脱节。不知何故,这会影响应用程序读取单元格值的方式

在大多数情况下,只读取
单元格
作为范围对象是安全的

您可以尝试的三种选择是更改代码以读取:

  • 单元格公式
    ,或
  • 单元格文本
    ,或
  • cell.Value
一个潜在的问题是格式可能是Excel独有的,因此,如果应用程序、数据库或客户端系统/计算机不支持基础字符集,则这种不匹配错误可能会持续存在

此处可能有一些附加信息(尽管主要涉及数字和日期格式):


听起来,您发现Excel并不是一种很好的传输和存储数据的媒介。在任何情况下,请提供一些问题示例,最好包括dropbox上的XLS文件,其中包含一些有问题的数据。我猜你有一些双字节字符或其他特殊字符会导致问题,但在看不见的情况下,我真的不知道。我不认为这是Excel的错。我发现单元格文本/值将从其公式中延迟,所有格式和样式将稍后应用于单元格文本/值,这就是为什么文本在单元格中显示OK(字体正确),而公式显示错误。但是我不明白为什么会发生这种情况,我的意思是在单元格文本和单元格公式之间存在一些同步问题。谢谢。除了试图描述正在发生的事情或您认为正在发生的事情外,请上传您的文件示例并确定一些有问题的单元格。这里没有人是pyschic。@DavidZemens哇,如果你不怕看我语言(越南语)的文本,那就好了,请看我的更新。很遗憾,语言障碍可能会造成问题,因为我不会用越南语读/说/写。。。你能告诉我是什么细胞给了你这个问题吗?也许我可以看看:)谢谢,我担心你的解决方案无法测试,因为我只使用NPOI,我不知道其他库,但使用NPOI,我尝试了所有这些:Cell.StringCellValue,Cell.ToString(),Cell.RichStringCellValue,但都给出了相同的结果。我知道单元格的值是以不同的方式编码的(称为TCVN3),而它们只有在以Unicode编码时才能以我最喜欢的字体正确显示。我的解决方案是将这些值转换为Unicode版本,它可以工作。。。。。。但新的问题是除了TCVN3和Unicode之外还有其他编码类型,我正在寻找如何知道单元格的编码名称并应用相应的转换。谢谢你的帮助。