2013-04-20 107 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