1

Excelシートの内容を読み取り、書き込み、編集と再インポートを許可する必要があります。私が抱えている問題は、ユーザーがシートのセルに数値を入力すると、その数値がSharedStringテーブルのインデックスと見なされることです。これは、私が必要としない効果です。私がやりたいのは、ワークシートを読む前に、ワークシートのセルを強制的にテキストとしてフォーマットすることです。そうすれば、私の番号は文字列として扱われると確信しています。どうすればこれを達成できますか?

この問題を解決するためにOPENXMLライブラリを使用した例をいただければ幸いです。

4

2 に答える 2

2

Excel から取得したものが文字列であることを確認する唯一の方法は、Range.Text (現在の形式に基づいて表示されたテキストを返す) を呼び出すことです。これは単一のセルでのみ取得できます。

ただし、フォーマットをテキストにしたい場合は、次のように呼び出します。

Cells.NumberFormat = "@"

上記で言ったことの詳細として... フォーマットを変更しても、セルの .Value は変更されません。値は通常、数値形式と内容に応じて、文字列、日付、または倍精度のいずれかになります。


編集
あなたの最後のコメントのために、私はあなたのためにいくつかの追加の調査を行いました. ただし、これは私によってテストされていません。これで問題が解決しない場合は、質問を更新して、コミュニティからより多くの反応を得るために何を試みたかを示すことをお勧めします。

この回答に記載されている手順を利用できるはずです(役立つ場合は、必ず賛成してください)。

唯一のバリエーションは、 NumberingFormatの作成をスキップできるはずです。コードにたどり着いたら: cellFormat.NumberFormatId = nf2decimal.NumberFormatId;nf2decimal の代わりに... 49 を使用するだけです。 したがって、このソースによるとcellFormat.NumberFormatId = 49;、49 は @ の事前定義された numbererFormat に対応する必要があります。

于 2012-10-19T20:07:11.660 に答える
1

VBA では次のようにします。

Cells.Select
Selection.NumberFormat = "@"
于 2012-10-19T20:04:56.177 に答える