0

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ファイルでUPDATE xlsファイル

4

1 に答える 1

0

Win 7 64b で Excel 2010 を使用しています。

.VnTime フォントがインストールされていませんが、スクリーンショットのおかげで、表示されている内容がわかり、セルに表示されるもの(フォント形式のテキスト) と数式バーに表示されるものの間に多少のずれがあるように見えます。どういうわけか、これはアプリケーションがセル値を読み取る方法に影響を与えます。

ほとんどの場合cell、 を範囲オブジェクトとして読み取るだけで安全です。

試すことができる 3 つの代替方法は、コードを変更して次のコードを読み取ることです。

  • cell.Formula、 また
  • cell.Text、 また
  • cell.Value

潜在的な問題の 1 つは、書式設定が Excel に固有のものである可能性があることです。そのため、基になる文字セットがアプリケーション、データベース、またはクライアントのシステム/コンピューターでサポートされていない場合、この種の不一致エラーが持続する可能性があります。

ここにいくつかの追加情報があるかもしれません (主に数値と日付のフォーマットに関係しますが):

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

于 2013-04-20T20:00:59.323 に答える