web-dev-qa-db-ja.com

Excelシートを読み取り、UiPathを介してセル値をさまざまなテキストフィールドに配置するにはどうすればよいですか?

Excelシートを読み取り、UiPathを介してセル値をさまざまなテキストフィールドに配置するにはどうすればよいですか?

私は次のようなExcelシートを持っています:

SAP_Excel

Excelの内容を読み、後で内容を繰り返すために、次のように内容を_Output Data Table_に保存しました。

  • 読み取り範囲-出力:

    • DataTable:CVdatatable
  • 出力データテーブル

    • DataTable:CVdatatable
    • テキスト:opCVdatatable

スクリーンショット:

SAP_OutputDataTable

最後に、textopCVdatatableを繰り返し読み取り、テキストフィールドに書き込みます。したがって、必要な入力フィールドで、必要に応じてopCVdatatableまたはopCVdatatable+ "[k(enter)]"について言及しました。

スクリーンショット:

SAP_iterate_OutputDataTable

しかし、UiPathは、opCVdatatableを呼び出すたびに、出力データテーブルの先頭から開始するようです。

つまり、必要な各入力フィールドは、出力データテーブルに格納されているデータですべてのデータで繰り返しいっぱいになります。

誰かが私を助けてくれますか?

3
DebanjanB

私の最初の推奨事項は、_Workbook: Read range activity_を使用してExcelからデータを読み取ることです。これは、Excelが高速でバックグラウンドで動作し、Excelをシステムにインストールする必要がないためです。

次のようにシーケンスを開始します(ヘッダーの追加プロパティはチェックされていないことに注意してください)。

このアクティビティはすべての行項目を含む文字列を出力するため、_Output Data Table_を使用する必要はありません。代わりに、データテーブル内のアイテムにアクセスし、それぞれを_type into_の文字列として出力します(例:CVDatatable.Rows(0).Item(0).ToString)。

iterationのテキストopCVdatatableを読み、それらを書きたいと言いますテキストフィールドに。これはもう少し複雑ですが、例を示します。 _For Each Row_アクティビティを使用して、CVDatatableの各行をループし、必要に応じてindexプロパティを設定できます。下記参照:

課題は、セレクターをここで正しく取得して動的にし、反復ごとに異なるテキストフィールドをターゲットにすることです。 _type into_アクティビティのセレクターは、ターゲットとするシステムによって異なりますが、次に例を示します。

そしてこれのためのセレクター:

また、これはあなたがテストするための作業 [〜#〜] xaml [〜#〜] ファイルです。

お役に立てれば。

クリス

2
Cristophs0n

これは、別のより一般的なアプローチです。プロセス自体にターゲットを含める代わりに、Excelを変更してセレクターの一部を含めます。

enter image description here

列Bに識別子が含まれていることに注意してください。このIDは、使用するアプリケーションによって異なります。たとえば、これが私のサンプルアプリのようです。ご覧のとおり、最初のテキストボックスのIDは585、2番目のテキストボックスは586などです(UiPathに公開されている場合は、コントロールの名前を含むあらゆる種類の識別子を操作できることに注意してください)。

uiexplorer

これで、ワークフローに複数のType Into要素を追加する代わりに、1つだけ追加し、データテーブルの各行をループして、動的セレクターを作成します。

workflow

私の場合、Type Intoアクティビティのセレクターは次のようになります。

"<wnd cls='#32770' title='General' /><wnd ctrlid='" + row(1).ToString() + "' />"

これにより、Excelシートのみからプロセスを維持できます。マップする必要のある新しいフィールドがある場合は、それをシートに追加するだけです。ワークフローを変更する必要はありません。

2
Wolfgang Radl