web-dev-qa-db-ja.com

ユーザーをCSVファイルにエクスポートする方法

Drupal 7.でCSVにユーザーをエクスポートしたいと思います。モジュール Views Data Export を使用できると思いますが、その方法がわからない、またはそれが私が望む正しいモジュールであるなら。

6
Jack Ryan

はい、 ビューデータのエクスポート が最適です。

ユーザーを表示するビューを作成し、ページ表示を追加します。エクスポートに必要なフィールドを追加し、必要に応じてその他の設定を変更します。

次に、データエクスポートタイプのディスプレイを追加し、ページディスプレイにアタッチするように設定します。このようにして、ファイルのダウンロードへのリンクをそのページに追加します(ページ表示をスキップして、パスが定義されたデータエクスポート表示のみを追加することもできます)。

形式設定でエクスポート形式(CSV)を選択します。多くのユーザーがいる場合は、[データエクスポート設定]でバッチ操作を選択してください。

ビューにアクセスするには、特定の権限またはロールを要求することもお勧めします。

10
arjan

はい、 Views Data Export が適切なモジュールですが、大きなデータファイルがある場合は、次のような適切なPHP制限を増やす必要があります。PHP _max_execution_time_および_memory_limit_(バッチプロセスを使用している場合を除く)。特にサポートされているdrush経由のエクスポートを使用する場合は、制限を増やす必要があります(別のPHP設定ファイルを使用していることに注意してください)。

カスタム関数を使用してユーザーをエクスポートするには、以下を確認してください すべてのユーザーをCSV形式でエクスポートするにはどうすればよいですか?

これは基本的に、いくつかのコールバック関数内で使用できる次のカスタムコードです。

_drupal_add_http_header('Content-Type', 'text/csv');
drupal_add_http_header('Content-Disposition', 'attachment; filename=users.csv');
$results = db_query("SELECT * FROM {users}");
$csvdata = 'Uid,Username,Email' . PHP_EOL;
foreach ($results as $record) {
   $row = array();
   $row[] = $record->uid; 
   $row[] = $record->name; 
   $row[] = $record->mail; 
   $csvdata .= implode(',', $row) . PHP_EOL;
}
print $csvdata;
drupal_exit();
_
2
kenorb

ユーザーからのカスタムフィールドを含めるには、以下を使用できます。

drupal_add_http_header('Content-Type', 'text/csv');
drupal_add_http_header('Content-Disposition', 'attachment; filename=users.csv');
$csvdata = 'Uid,Username,Email,Firstname' . PHP_EOL;

$query = new EntityFieldQuery();

$query->entityCondition('entity_type', 'user');
$result = $query->execute();

$uids = array_keys($result['user']);

// THIS IS YOUR ARRAY OF UIDS.
$users = user_load_multiple($uids);

foreach ($users as $record) {
   $row = array();
   $row[] = $record->uid; 
   $row[] = $record->name; 
   $row[] = $record->mail; 

   // Custom fields, for example
   $row[] = $record->field_first_name_user['und'][0]['value'] ?? ''; 
   $csvdata .= implode(',', $row) . PHP_EOL;
}
print $csvdata;
drupal_exit();

それが役に立てば幸い!

0
Jarkko Oksanen

これらの要件に対処する別のオプションは、以下で詳しく説明するように、 Forena モジュールを使用することです。

配信されたレポート

インストール/有効化すると、すぐに使用できるDrupal Administrationレポートが表示されます(他の多くのレポートの中で)それとともに配信されます:

1)アクティブユーザー

+-----------+-----------------------+-------------------------+---------+
| User      | Email                 | Last Logged in          | Actions |
+-----------+-----------------------+-------------------------+---------+
| Webmaster | [email protected] | Sun, 03/27/2016 - 18:39 | logs    |
| Admin     | [email protected]      | Thu, 04/07/2016 - 12:47 | logs    |
| Pierre    | [email protected]    | Fri, 04/01/2016 - 18:19 | logs    |
+-----------+-----------------------+-------------------------+---------+

ハイパーリンク「ログ」(「アクション」というタイトルの列)を使用して、「タイプ」、「メッセージ」、「タイムスタンプ」、および選択したログレコードの詳細(「重大度」、「ホスト名」など)を表示する後続のハイパーリンク(「詳細」).

2)役割の詳細

使用可能なロール(=レポートパラメータ)を選択すると、次の例のようなレポートが表示されます。

+-----------+---------+------------------------------+
| User Name | User Id | Actions                      |
+-----------+---------+------------------------------+
| Admin     | 1       | View Profile    Edit Profile |
| Webmaster | 8       | View Profile    Edit Profile |
+-----------+---------+------------------------------+

ハイパーリンク[プロファイルの表示]/[プロファイルの編集]を使用して、選択したユーザーのプロファイルを実際に表示/編集できます。

提供されたレポートの調整/複製

オプションで、これらのレポートをカスタマイズする場合は、そのレポート作成機能を使用できます。 WYSIWYGレポートライターやForenaクエリビルダー(Forenaがサブモジュールとして付属)などを使用して、ニーズに合ったクエリ/レポートを最初に作成します。このクエリ作成ツールに関するビデオチュートリアルについては、チェックアウト オプションのフィルターでデータブロックを定義 をご覧ください。

そのすべての結果は、表形式の出力やグラフになる可能性があります。レポートの内容が仕様と一致したら、それを(たとえば)CSVファイルとして保存できます。レポートを保存するためにサポートされている他の形式は、XLS、DOC、HTML、PDFなどです。

ビデオのデモとチュートリアル

ビデオのデモとチュートリアル には、Forenaに関するライブデモへのリンクがかなり含まれています。

0
Pierre.Vriens