0

私はExcelテンプレートを持っており、CustomerName、CompanyName、Addressなどのさまざまな定義済みフィールドがあります。これらはすべて単一のセルにあり、このセルには「Customer」という名前が付けられています。同様に、「Sender」という別のセルに関連するフィールドがあります。送信者の詳細。私の仕事は、CustomerセルとSenderセルを見つけて、それらに含まれる値を実際の値に置き換えることです。たとえば、「Customer」セルを見つけて、CustomerNameを実際の名前「John」に、ComanyNameを「XYZ」に置き換えるなどです。他のフィールドについても、同じタスクが送信者セルに対して行われます。

私はMicrosoft.Office.Interop.Excelを使用して、このタスクを次のように実装しています。

xlWorkSheet.Cells.Replace( "CustomerName"、 "John"、Excel.XlLookAt.xlPart、missingValue、missingValue、missingValue、missingValue、missingValue);

xlWorkSheet.Cells.Replace( "CompanyName"、 "XYZ"、Excel.XlLookAt.xlPart、missingValue、missingValue、missingValue、missingValue、missingValue);

問題は、単一のセル内のこのすべてのフィールドです。フィールド値が残りのフィールドを上にシフトして空のスペースを埋めない場合は、別のフィールドを見つけてそれらの値を置き換える必要があります。

解決策を提供してください。

4

1 に答える 1

0

データを文字列にプルし、文字列操作を行ってから、セル値に戻します...

Dim StrToReplace as string = xlWorkSheet.Range("Customer").value

StrToReplace = StrToReplace.replace("CustomerName", "John")
StrToReplace = StrToReplace.replace("CompanyName", "XYZ")
... etc

xlWorkSheet.Range("Customer").value = StrToReplace

次のような複数の行でStrToReplace.replaceを繰り返さないことで、さらに効率的にすることができます。

StrToReplace = StrToReplace.replace("CustomerName", "John").replace("CompanyName", "XYZ")

または、おそらくstringbuilderを使用しますが、これは少なくとも現在の問題を解決するための正しい方向を示しているはずです。

お役に立てれば

于 2012-10-26T21:09:13.790 に答える