web-dev-qa-db-fra.com

Comment exporter des utilisateurs vers un fichier CSV?

Je voudrais exporter des utilisateurs dans un CSV en Drupal 7. Je crois que je peux utiliser le module Views Data Export , mais je ne sais pas comment faire cela ou si c'est le bon module que j'aimerais.

6
Jack Ryan

Oui, exportation des données vues est votre meilleur choix.

Créez une vue affichant les utilisateurs et ajoutez un affichage de page. Ajoutez les champs souhaités dans votre exportation et modifiez les paramètres supplémentaires souhaités.

Ajoutez ensuite un affichage de type Exportation de données et définissez-le pour qu'il soit attaché à l'affichage de la page. De cette façon, il ajoutera un lien vers le téléchargement de fichier sur cette page (vous pouvez probablement également ignorer l'affichage de la page et n'ajouter qu'un affichage d'exportation de données avec un chemin défini).

Choisissez votre format d'exportation (CSV) sous les paramètres de format. Si vous avez beaucoup d'utilisateurs, assurez-vous de choisir l'opération par lots sous "Paramètres d'exportation des données".

C'est également une bonne idée d'exiger une autorisation ou un rôle spécifique pour accéder à la vue.

10
arjan

Oui, le Views Data Export est le bon module, mais si vous avez de gros fichiers de données, vous devez augmenter les limites PHP appropriées, telles que: PHP max_execution_time Et memory_limit, À moins que vous n'utilisiez un traitement par lots, donc ça devrait aller. Vous devez augmenter les limites en particulier lorsque vous utilisez l'exportation via drush qui est prise en charge (notez qu'il utilise un fichier de paramètres PHP séparé).

Pour exporter des utilisateurs en utilisant une fonction personnalisée, vérifiez: Comment puis-je exporter tous les utilisateurs au format CSV?

qui est essentiellement le code personnalisé suivant que vous pouvez utiliser dans une fonction de rappel:

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

Pour inclure des champs personnalisés de vos utilisateurs, vous pouvez utiliser:

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();

J'espère que cela aide!

0
Jarkko Oksanen

Une autre option pour répondre à ces exigences consiste à utiliser le module Forena , comme détaillé ci-dessous.

Rapports livrés

Après l'avoir installé/activé, vous obtenez ces rapports prêts à l'emploi Administration Drupal rapports qui sont livrés avec (parmi de nombreux autres rapports):

1) Utilisateurs actifs

+-----------+-----------------------+-------------------------+---------+
| 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    |
+-----------+-----------------------+-------------------------+---------+

En utilisant le lien hypertexte "journaux" (dans la colonne intitulée "Actions"), vous obtenez un nouveau rapport (= journaux pour l'utilisateur) montrant les entrées de journal les plus récentes pour l'utilisateur sélectionné avec "type", "message", "horodatage" et avec un lien hypertexte ultérieur ("détails") qui affichera des détails supplémentaires pour l'enregistrement de journal sélectionné (tels que "gravité", "nom d'hôte", etc.).

2) Détails du rôle

Après avoir sélectionné l'un des rôles disponibles (= un paramètre de rapport), vous obtenez un rapport qui ressemble à cet exemple:

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

Les hyperliens Afficher le profil/Modifier le profil peuvent être utilisés pour afficher/modifier le profil de l'utilisateur sélectionné.

Réglage/clonage des rapports livrés

Facultativement, si vous souhaitez personnaliser ces rapports, vous pouvez utiliser ses fonctionnalités de rédaction de rapports. Comme son rédacteur de rapport WYSIWYG et/ou Forena Query Builder (livré avec Forena en tant que sous-module) pour créer d'abord une requête/rapport qui correspond à vos besoins. Pour un didacticiel vidéo sur cet outil d'écriture de requête, consultez Définir des blocs de données avec des filtres facultatifs .

Le résultat pourrait être une sortie tabulaire et/ou un graphique. Une fois que le contenu du rapport correspond aux spécifications, vous pouvez l'enregistrer sous la forme (par exemple) d'un fichier CSV. Les autres formats pris en charge pour enregistrer un rapport sont XLS, DOC, HTML, PDF, etc.

Démos vidéo et tutoriels

Démos vidéo et tutoriels contient pas mal de liens vers des démos en direct sur Forena.

0
Pierre.Vriens