LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

Je vais vous dire un moyen rapide de créer un fichier xml à partir d'un tableau Excel!

Les documents XML sont très puissants et puissants. En utilisant un seul fichier XML, vous pouvez remplir votre site d'informations en quelques secondes! En effet, tous les moteurs modernes (CMS) ont la possibilité d'importer à partir d'un fichier hml. Alors qu'est-ce que je fais.

Comme vous le savez, les formats * .xls (* .xlsx dans Office 2007) sont des formats Microsoft Office Excel. Le bureau de 2003 est une chose du passé, il y a déjà 2010, mais je travaille pour 2007, et, par conséquent, je dirai sur la base de cela. Allons-y!

1. Accédez au site Web de Microsoft et téléchargez le module complémentaire pour travailler avec XML. Téléchargez le complément Excel 2003: complément d'outils XML. Cela ne pèse pas beaucoup, 397 Ko.



2. Installez-le sur votre ordinateur. Il n'y a rien de difficile à installer. Par défaut, le complément est installé ici: c: \\ Office Samples \\ OfficeExcel2003XMLToolsAddin

3. Ouvrez maintenant Excel, allez dans le menu et sélectionnez "Options Excel".

4. Dans la fenêtre qui apparaît, à gauche, sélectionnez l'élément "Modules complémentaires", et en bas de la fenêtre, cliquez sur le bouton "Aller à ..."

5. Une nouvelle fenêtre s'ouvrira devant vous, dans laquelle vous devez cliquer sur le bouton "Parcourir ...". Son apparence est illustrée ci-dessous.

6. Vous devez maintenant trouver le module complémentaire XmlTools installé (watch). Sélectionnez-le et cliquez sur OK!

7. Si vous avez tout fait correctement, vous verrez la fenêtre suivante! N'hésitez pas à cliquer sur OK, l'installation est terminée!

8. Vous avez un onglet complémentaire dans le menu supérieur et des outils XML sur la gauche.

Nous avons compris l'installation et passons maintenant directement à la conversion (exportation) de xls en xml.

1. Pour ce faire, ouvrez le fichier contenant les données à dépasser. Ensuite, nous sélectionnons le premier élément dans le menu déroulant "Convertir une plage en une liste XML ..."

2. Une petite fenêtre s'ouvrira devant vous, de quoi avez-vous besoin? Il y a des boutons radio, Non et Oui, à quoi servent-ils? C'est simple, si vous avez un en-tête pour les données (dans mon cas, c'est le cas), sélectionnez Oui, et s'il n'existe pas, alors non. Cliquez ensuite sur le petit rectangle de la rangée du haut.

3. Sélectionnez la zone de données que nous convertissons et cliquez sur le bouton à droite dans la fenêtre qui apparaît. La fenêtre précédente est retournée, dans laquelle nous appuyons sur OK.

4. Votre assiette devrait changer, vous pouvez dire transformer, pour moi ça ressemble à ceci:

6. Dans la liste déroulante "Type de fichier", sélectionnez Données XML, cliquez sur "Enregistrer".

Je vous félicite, votre dossier a été créé!

J'espère que tout a été expliqué en détail et compréhensible, mais si vous avez des questions, veuillez écrire!

Lors de l'élaboration d'un système de gestion électronique des documents, il était nécessaire de mettre en œuvre des fonctions d'exportation de données dans des formats courants. En particulier, dans le format Microsoft Excel... Les exigences d'exportation étaient assez simples - exporter des données avec un minimum de formatage, c'est-à-dire pas de cellules fusionnées, de jeux de polices, etc. Formats d'exportation XLSX et Excel XML.

Dans ce cas, je parlerai d'Excel XML.

Ainsi, dans tout système fonctionnant sur des données tabulaires, tôt ou tard, il est nécessaire d'exporter des données. Les objectifs d'exportation sont différents:

Implémenter dans la classe un ensemble de fonctions pour écrire les valeurs de cellule et de ligne est la principale exigence, ce qui implique la création de fonctions pour écrire des valeurs de cellule de ces types et la possibilité d'écrire la ligne finie dans un fichier.

La possibilité de travailler avec une quantité illimitée de données - bien sûr, la classe d'exportation elle-même ne peut pas être responsable de la quantité inscriptible, mais elle doit fournir des fonctions pour écrire des données sur le disque et libérer mémoire vive pour le prochain bloc de données.

En plus des exigences décrites, il était nécessaire d'ajouter des fonctions de service:

  • Activation du filtre automatique
  • Compression du fichier en zip.

la mise en oeuvre

Tout d'abord, lors de la création d'une classe, je vérifie le nom final du fichier et demande le nombre de colonnes et de lignes. Le fichier doit avoir le nom correct et le dossier dans lequel il sera enregistré doit exister. Tout est comme d'habitude.
Le format Excel XML vous permet d'enregistrer des informations sur l'utilisateur qui l'a créé dans le fichier.Par conséquent, lors de la création de l'en-tête, j'écris le nom de l'organisation, des informations sur l'utilisateur et la date de création du fichier.

Fonction publique writeDocumentProperties ($ organization \u003d , $ user \u003d null) (fwrite ($ this-\u003e file, " "); if (! is_null ($ user)) (fwrite ($ this-\u003e file," ". $ user-\u003e description.""); fwrite ($ this-\u003e file," ". $ user-\u003e description."");) $ dt \u003d new Datetime (); $ dt_string \u003d $ dt-\u003e format (" Y-m-d \\ TH: i: s \\ Z "); fwrite ($ this-\u003e file," ". $ dt_string.""); fwrite ($ this-\u003e file," ". $ dt_string.""); if (! is_null ($ organisation)) fwrite ($ this-\u003e file," ". $ organisation-\u003e nom.""); fwrite ($ this-\u003e file," 12.00"); fwrite ($ this-\u003e file,""); }
Certes, c'est dans cette fonction que les entités du système de flux de travail sont utilisées - organisation (organisation) et utilisateur (utilisateur). Le remplacement de ces entités par, par exemple, des valeurs de chaîne n'est pas un problème.

La partie la plus intéressante du titre est l'information sur le style. Ils sont implémentés très facilement au format XML Excel, donc je crée simplement un tableau avec des styles pour les chaînes, la date / heure et les hyperliens.

Fonction publique writeStyles () (fwrite ($ this-\u003e file, ""); //default style fwrite($this->file, ""); // style Datetime fwrite ($ this-\u003e file,""); fwrite ($ this-\u003e file,""); fwrite ($ this-\u003e file,""); // Style de lien hypertexte fwrite ($ this-\u003e file,""); // Gras fwrite ($ this-\u003e file,""); fwrite ($ this-\u003e file,""); }

Travaux préparatoires terminés, vous pouvez procéder à l'enregistrement des données. L'ouverture d'une feuille de calcul est juste quelques balises, juste à ce moment, les informations sur le nombre de colonnes et de lignes sont utilisées.

Fonction publique openWorksheet () (fwrite ($ this-\u003e file, " "); fwrite ($ this-\u003e fichier, strtr ("

", array (" (col_count) "\u003d\u003e $ this-\u003e colCount," (row_count) "\u003d\u003e $ this-\u003e rowCount)));)
Mais écrire les lignes est un processus plus intéressant. La classe devrait travailler rapidement et traiter une quantité illimitée de données, car les enregistrements peuvent être cent mille voire un million! Si vous voulez de la vitesse, travaillez avec de la mémoire, si vous voulez une quantité illimitée de données, travaillez avec un disque. Pour concilier les exigences, j'ai implémenté les fonctions resetRow et flushRow.
Le premier efface la ligne actuelle, après quoi il peut être à nouveau rempli avec des données, et le second écrit la ligne actuelle dans un fichier ouvert sur le disque. Leur utilisation conjointe vous permet de trouver un équilibre entre la vitesse et la quantité de mémoire utilisée.

Fonction publique resetRow () ($ this-\u003e currentRow \u003d array ();) public function flushRow () (fwrite ($ this-\u003e file, implode ("", $ this-\u003e currentRow)); unset ($ this-\u003e currentRow);)
Chaque cellule est écrite avec une fonction correspondant au type de données, à savoir appendCellxxx, où xxx est le type de données. Types de données valides: Num, String, Real, DateTime, Date, Time, Link. Un exemple de fonction pour écrire une valeur numérique:

Fonction publique appendCellNum ($ value) ($ this-\u003e currentRow \u003d " ". $ value.""; }
Après avoir écrit toutes les données, il reste à fermer la feuille de calcul et le classeur.

Application

L'utilisation de la classe décrite est basée sur l'exportation de données à l'aide du fournisseur CArrayDataProvider. Toutefois, en supposant que la quantité de données exportées peut s'avérer très importante, un itérateur CDataProviderIterator spécial est utilisé, qui itère sur les données renvoyées de 100 enregistrements (vous pouvez spécifier un nombre différent d'enregistrements).

Fonction publique exportExcelXML ($ organization, $ user, & $ filename) ($ this -\u003e _ provider \u003d new CArrayDataProvider (/ * query * /); Yii :: import ("ext.AlxdExportExcelXML.AlxdExportExcelXML"); $ export \u003d new AlxdExportExcelXML ($ filename, count ($ this -\u003e _ attributes), $ this -\u003e _ provider-\u003e getTotalItemCount () + 1); $ export-\u003e openWriter (); $ export-\u003e openWorkbook (); $ export-\u003e writeDocumentProperties ($ organisation, $ user); $ export-\u003e writeStyles (); $ export-\u003e openWorksheet (); // ligne de titre $ export-\u003e resetRow (); $ export-\u003e openRow (true); foreach ($ this -\u003e _ attributes as $ code \u003d\u003e $ format) $ export-\u003e appendCellString ($ this -\u003e _ objectref-\u003e getAttributeLabel ($ code)); $ export-\u003e closeRow (); $ export-\u003e flushRow (); // lignes de données $ lignes \u003d new CDataProviderIterator ($ this -\u003e _ provider, 100); foreach ($ rows as $ row) ($ export-\u003e resetRow (); $ export-\u003e openRow (); foreach ($ this -\u003e _ attributes as $ code \u003d\u003e $ format) (switch ($ format-\u003e type) (case "Num": $ export-\u003e appendCellNum ($ row [$ code]); / * autres types * / par défaut: $ export-\u003e append CellString (""); )) $ export-\u003e closeRow (); $ export-\u003e flushRow (); ) // ferme tout $ export-\u003e closeWorksheet (); $ export-\u003e closeWorkbook (); $ export-\u003e closeWriter (); // fichier zip $ export-\u003e zip (); $ filename \u003d $ export-\u003e getZipFullFileName (); )
Dans mon cas, chaque ligne est écrite sur le disque, ce qui est tout à fait acceptable pour le moment, mais devra peut-être être modifié à l'avenir. Par exemple, il serait sage de ne pas enregistrer toutes les lignes, mais toutes les dix ou même cent lignes à la fois. Ensuite, la vitesse d'exportation augmentera.

La vitesse

D'ailleurs, d'après ma propre expérience, j'ai été convaincu de l'importance de supposer la possibilité de l'existence de grandes quantités de données dans une opération par lots, comme l'exportation.
Au départ, j'ai essayé d'exporter des données en utilisant

XML est l'un des formats les plus courants pour stocker et échanger des données entre diverses applications... Le programme Microsoft Excel fonctionne également avec des données, de sorte que la question de la conversion des fichiers du standard XML vers les formats Excel est très pertinente. Voyons comment effectuer cette procédure de différentes manières.

Les fichiers XML sont écrits dans un langage de balisage spécial similaire au HTML des pages Web. Par conséquent, ces formats ont une structure assez similaire. Dans le même temps, Excel est avant tout un programme qui a plusieurs formats «natifs». Les plus connus sont: Excel Workbook (XLSX) et Excel 97-2003 Workbook (XLS). Découvrons les principaux moyens de convertir des fichiers XML dans ces formats.

Méthode 1: fonctionnalité Excel intégrée

Excel fonctionne très bien avec les fichiers XML. Elle peut les ouvrir, les modifier, les créer, les enregistrer. Par conséquent, la version la plus simple de la tâche à accomplir consiste à ouvrir cet objet et à l'enregistrer via l'interface de l'application sous forme de documents XLSX ou XLS.


Il s'agit de la procédure de conversion du fichier XML en format Excel via l'interface du programme est terminée.

Méthode 2: importer des données

La méthode ci-dessus ne convient que pour les fichiers XML avec la structure la plus simple. Les tables plus complexes converties de cette manière peuvent ne pas être traduites correctement. Mais, il existe un autre outil Excel intégré qui vous aidera à importer correctement les données. Il est situé dans Menu développeurqui est désactivé par défaut. Par conséquent, tout d'abord, il doit être activé.


Ainsi, la conversion dans la direction dont nous avons besoin sera effectuée avec la conversion de données la plus correcte.

Méthode 3: convertisseur en ligne

Les utilisateurs qui, pour une raison quelconque, n'ont pas installé Excel sur leur ordinateur, mais qui ont un besoin urgent de convertir un fichier du format XML au format EXCEL, peuvent utiliser l'un des nombreux services de conversion en ligne spécialisés. L'un des sites les plus conviviaux de ce type est Convertio.


Cette option peut servir de bon filet de sécurité en cas de manque d'accès aux outils standards pour le reformatage dans ce sens.

Comme vous pouvez le voir, Excel lui-même a des outils intégrés qui vous permettent de convertir un fichier XML dans l'un des formats «natifs» de ce programme. Les instances les plus simples peuvent être facilement converties en utilisant la fonction habituelle "Enregistrer sous ...". Pour les documents avec une structure plus complexe, il existe une procédure de conversion distincte via l'importation. Les utilisateurs qui, pour une raison quelconque, ne peuvent pas utiliser ces outils, ont la possibilité d'effectuer la tâche en utilisant des services en ligne spécialisés pour la conversion de fichiers.

Si vous devez créer un fichier de données XML et un fichier de schéma XML à partir d'une plage de cellules dans une feuille de calcul, vous pouvez utiliser la version 1.1 du complément Outils XML pour Excel 2003 pour étendre les fonctionnalités XML existantes dans Microsoft Excel 2007 et versions ultérieures.

Remarque: Ce complément a été développé pour Excel 2003. Documentation et interface utilisateur font référence à des listes appelées tableaux Excel dans les versions de l'application ultérieures à Excel 2003.

Information additionnelle pour plus d'informations sur l'utilisation de ce complément, consultez Utilisation du complément d'outils XML 1.1 pour Excel 2003.

Étape 2: convertir une plage de cellules en tableau XML

    Entrez les données pour lesquelles vous souhaitez générer un fichier de données XML et un fichier de schéma XML. Les données doivent être présentées sous forme de tableau sous forme de colonnes et de lignes (données dites régulières).

    Dans l'onglet Modules complémentaires en groupe Commandes du menu cliquez sur la flèche à côté de la légende Outils XML et appuyez sur le bouton Convertir la plage en liste XML.

    Entrez la plage de cellules contenant les données à convertir en référence absolue dans la zone de texte.

    Sur le terrain La première ligne contient les noms des colonnes sélectionner ne passi la première ligne contient des données, ou Ouisi la première ligne contient des en-têtes de colonne et cliquez sur D'accord.

    Excel créera automatiquement un schéma XML, liera les cellules au schéma et créera un tableau XML.

    Important: Si Visual Basic Editor s'ouvre et affiche une erreur Visual Basic pour Applications (VBA), procédez comme suit.

    1. Cliquez sur le bouton D'accord.

      Dans la ligne en surbrillance du module de code VBA, supprimez le «50» de la ligne. En d'autres termes, changez:
      XMLDoc comme MSXML2 ... DOMDocument50
      À qui:
      XMLDoc en tant que Msxml2. Document de maison

      Appuyez sur F5 pour trouver la ligne suivante contenant le texte "XMLDoc As msxml2.DOMDocument50", cliquez sur D'accord et changez la ligne comme dans le paragraphe précédent.

      Appuyez à nouveau sur F5 pour rechercher et modifier d'autres instances de la chaîne.

      Si le message d'erreur VBA n'apparaît plus après avoir appuyé sur F5, fermez Visual Basic Editor pour revenir au classeur. La plage de cellules sera convertie en un tableau XML.

      Remarque: Pour afficher toutes les cartes XML dans un classeur, l'onglet Développeur en groupe XML appuie sur le bouton La source pour afficher le volet Office Source XML. Au bas du volet Office Source XML, cliquez sur Cartes XML.

      Si l'onglet Développeur n'est pas visible, suivez les trois premières étapes de la section suivante pour l'ajouter au ruban Excel.

Étape 3: Exportez la table XML vers un fichier de données XML (XML)

Remarque: Lors de la création de mappes XML et de l'exportation de données vers Excel vers des fichiers XML, le nombre de lignes pouvant être exportées est limité. Lors de l'exportation vers XML depuis Excel, vous pouvez enregistrer jusqu'à 65 536 lignes. Si le fichier contient plus de 65 536 lignes, Excel ne pourra exporter que les premières lignes (mod 65 537 lignes). Par exemple, si une feuille de calcul contient 70 000 lignes, Excel exportera 4 464 lignes (70 000 mod 65 537). Nous vous recommandons de suivre l'un des conseils suivants: 1) utilisez le format XLSX; 2) enregistrez le fichier au format "XML 2003 Table (* .xml)" (les mappages seront perdus); 3) supprimez toutes les lignes après 65 536 puis exportez à nouveau (cela conservera les mappages, mais les lignes à la fin du fichier seront perdues).

XML est format universel travailler avec des données. Il est soutenu par de nombreux programmes, y compris ceux de la sphère SGBD. Par conséquent, la conversion d'informations en XML est importante précisément du point de vue de l'interaction et de l'échange de données entre diverses applications. Excel est l'un des programmes qui fonctionnent avec des tableaux et peut même effectuer des manipulations avec des bases de données. Voyons comment convertir des fichiers Excel en XML.

La conversion de données en XML n'est pas un processus facile, car elle implique la création d'un schéma spécial (schema.xml). Cependant, pour convertir des informations en fichier le plus simple ce format il suffit d'avoir à portée de main les outils habituels pour enregistrer dans Excel, mais pour créer un élément bien structuré, vous devrez bricoler minutieusement l'élaboration d'un diagramme et le connecter à un document.

Méthode 1: sauvegarde simple

Dans Excel, vous pouvez enregistrer des données au format XML en utilisant simplement le menu "Enregistrer sous…"... Certes, il n'y a aucune garantie que tous les programmes fonctionneront correctement avec le fichier créé de cette manière. Et cette méthode ne fonctionne pas dans tous les cas.


Ainsi, la conversion de fichier d'Excel au format XML sera effectuée.

Méthode 2: outils de développement

Vous pouvez convertir Excel en XML à l'aide des outils de développement de l'onglet programme. En même temps, si l'utilisateur fait tout correctement, il recevra à la sortie, contrairement à la méthode précédente, un fichier XML à part entière, qui sera correctement perçu applications tierces... Mais il faut dire tout de suite que tous les débutants n'ont pas forcément suffisamment de connaissances et de compétences pour apprendre immédiatement à convertir des données de cette manière.

  1. L'onglet des outils de développement est désactivé par défaut. Par conséquent, tout d'abord, vous devez l'activer. Aller à l'onglet "Fichier" et cliquez sur l'élément "Paramètres".
  2. Dans la fenêtre des paramètres qui s'ouvre, passez à la sous-section "Personnalisez le ruban"... Sur le côté droit de la fenêtre, cochez la case à côté de la valeur "Développeur"... Après cela, cliquez sur le bouton "D'ACCORD"situé au bas de la fenêtre. L'onglet des outils de développement est maintenant activé.
  3. Ensuite, ouvrez feuille de calcul Excel dans le programme de toute manière pratique.
  4. Sur sa base, nous devons créer un diagramme formé dans n'importe quel éditeur de texte. À ces fins, vous pouvez utiliser les Bloc-notes Windows, mais il est préférable d'utiliser une application spécialisée pour la programmation et l'utilisation des langages de balisage Notepad ++. Nous lançons ce programme. Nous y créons un diagramme. Dans notre exemple, cela ressemblera à la capture d'écran ci-dessous pour la fenêtre Notepad ++.

    Comme vous pouvez le voir, les balises d'ouverture et de fermeture du document dans son ensemble sont "Base de données"... La balise joue le même rôle pour chaque ligne. "Record"... Pour le schéma, il suffira amplement de ne prendre que deux lignes du tableau et de ne pas tout traduire manuellement en XML. Le nom des balises de colonne d'ouverture et de fermeture peut être arbitraire, mais dans ce cas, pour plus de commodité, nous avons choisi de simplement traduire les noms de colonne en russe en langue Anglaise... Une fois les données saisies, nous les enregistrons simplement via la fonctionnalité éditeur de texte n'importe où sur votre disque dur au format XML appelé "Schéma".

  5. Revenez à Excel avec la feuille de calcul déjà ouverte. Passer à l'onglet "Développeur"... Sur le ruban de la boîte à outils "XML" cliquez sur le bouton "La source"... Dans le champ qui s'ouvre sur le côté gauche de la fenêtre, cliquez sur le bouton "Cartes XML ...".
  6. Dans la fenêtre qui s'ouvre, cliquez sur le bouton "Ajouter ...".
  7. La fenêtre de sélection de la source démarre. Allez dans le répertoire de l'emplacement du schéma compilé précédemment, sélectionnez-le et cliquez sur le bouton "Ouvert".
  8. Une fois que les éléments du diagramme sont apparus dans la fenêtre, faites-les glisser avec le curseur vers les cellules correspondantes des noms de colonne du tableau.
  9. Cliquez avec le bouton droit sur la table résultante. DANS menu contextuel pas à pas "XML" et "Exportation…"... Après cela, nous sauvegardons le fichier dans n'importe quel répertoire.

Comme vous pouvez le voir, il existe deux façons principales de convertir des fichiers XLS et XLSX en XML programme Microsoft Exceller. Le premier d'entre eux est extrêmement simple et consiste en une procédure de sauvegarde élémentaire avec une extension donnée via la fonction "Enregistrer sous…"... Simplicité et clarté cette optionsont sans aucun doute les avantages. Mais cela présente un inconvénient très grave. La conversion est effectuée sans tenir compte de certaines normes et, par conséquent, le fichier ainsi converti peut simplement ne pas être reconnu par des applications tierces. La deuxième option consiste à compiler une carte XML. Contrairement à la première méthode, la table convertie selon ce schéma répondra à toutes les normes de qualité XML. Mais, malheureusement, tous les utilisateurs ne peuvent pas comprendre rapidement les nuances de cette procédure.

LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam