Traduire un tableau d'Excel en HTML. Conversion d'Excel en HTML : correcte, de haute qualité, simple. choses à garder à l'esprit lors de la conversion de fichiers Excel en HTML

En contact avec

camarades de classe

ALEXEY Michourin

Conversion d'Excel en HTML :

correctement, efficacement, simplement

Ainsi, notre tâche consiste à convertir correctement un document du format xls au format HTML, en tenant compte du formatage du document d'origine et en même temps avec "peu de sang"

Formulation du problème. Ou quel est le problème ?

De nombreux webmasters sont souvent confrontés à la tâche de convertir des fichiers Microsoft Excel vers d'autres formats. Cela se heurte souvent à des difficultés, car le format xls, comme tout le monde le sait très bien, n'est pas documenté.

Dans certains cas, il est possible de sauvegarder les données Excel dans des formats documentés puis de les traiter. Cependant, cette méthode ne fonctionne souvent pas de manière satisfaisante. Les formats simples et faciles à manipuler ne sont pas capables de stocker toutes les informations de mise en forme d'un document, et la mise en œuvre d'un gestionnaire de format complexe prend inutilement du temps.

Vous n'avez pas besoin d'aller loin pour un exemple. De nombreuses entreprises qui ont leurs propres pages Web et les mettent à jour périodiquement utilisent Excel. Le webmaster est confronté à une tâche de conversion chaque fois que des informations sont mises à jour sur le serveur. De plus, la tâche peut être compliquée par les aspects suivants :

Premièrement, il y a un changement de conception. La liste de prix préparée dans Excel est généralement conçue pour être imprimée sur une imprimante noir et blanc. La liste de prix sur le site Web ne l'est pas. Au moins pour cette raison, un simple "Enregistrer en tant que page Web" ne convient pas (je suis déjà silencieux sur la qualité du code HTML obtenu avec une telle sauvegarde).

Deuxièmement, lors de la conversion, il est nécessaire de prendre en compte les spécificités d'Excel. Par exemple, de nombreuses personnes qui éditent une liste de prix utilisent largement la commande Format / Ligne / Masquer. Dans ce cas, la hauteur de ligne devient nulle et la ligne semble disparaître de l'écran et à l'impression. Il est clair que de telles lignes ne devraient pas non plus arriver sur le site Web. Cependant, ils sont parfaitement enregistrés dans d'autres formats et ne sont pas différents des chaînes ordinaires, non masquées. Cela conduit au fait que la doctrine de "Enregistrer en tant que texte et processus délimités" ne donne pas de résultats satisfaisants.

Troisièmement, la liste de prix utilise souvent un formatage, qui est essentiel à préserver. Par exemple, les noms de certains produits peuvent être barrés ou surlignés en couleur comme signe que ces produits étaient et seront nécessairement, mais maintenant ils ne le sont plus. Certaines positions peuvent être en italique et ainsi de suite. Toutes ces informations disparaissent sans laisser de trace si vous réenregistrez la liste de prix dans format simple, disons, sous forme de texte délimité par des tabulations.

Ainsi, notre tâche consiste à convertir correctement le document du format xls au format HTML, en tenant compte du formatage du document d'origine, et en même temps avec "peu de sang".

Je propose de diviser cette tâche en deux. La première consiste à stocker les données dans un format simple, qui contiendra néanmoins toutes les informations dont nous avons besoin sur le balisage du document. La seconde consiste à traiter ce format et à créer une page HTML.

Je propose de résoudre la première tâche (export) à l'aide des outils Excel. Ici, en fait, nous n'avons pas le choix, le format xls ne peut être traité que par la seule application au monde qui le comprend. C'est de la dialectique.

Je propose de résoudre le deuxième problème au moyen du langage Perl. Pourquoi? Parce que ce langage se concentre sur le travail avec des chaînes et la résolution de problèmes comme le nôtre (Perl - Practical Extraction and Report Language - ce dont vous avez besoin). Parce que ce langage est connu par de nombreux programmeurs associés au développement Web (si vous n'êtes pas l'un d'entre eux et que vous envisagez de travailler sur le Web, je vous recommande sincèrement de prêter attention à Perl). Parce que cette langue est gratuite et disponible pour tout utilisateur sur n'importe quelle plateforme. Et parce que mon code Perl peut alors être facilement modifié, le forçant, par exemple, à mettre chaque section de la liste de prix dans un fichier séparé, trier les positions de prix de différentes manières, suivre les mises à jour et la dynamique des prix, fournir chaque position en HTML champs de formulaire pour la commande en ligne dans la boutique en ligne ... Au final, mon script est facile à transformer en une application CGI pour administrer un serveur web.

Une telle solution me semble la plus souple, fonctionnelle et compacte possible, car chaque partie du problème est résolue par les moyens les plus adaptés à sa solution.

Partons d'un exemple précis. En tant que "cobaye", je propose la liste de prix suivante (voir Fig. 1).

Comme vous pouvez le voir, il combine tous les éléments désagréables mentionnés ci-dessus : à la fois la mise en forme (arrière-plan, barré, gras) et les lignes cachées (si vous regardez bien, vous remarquerez que la douzième ligne suit immédiatement la neuvième). Prenons soin d'eux.

Exporter des données depuis Excel

Commençons à résoudre le premier problème. Pour exporter des données depuis Excel, je propose une macro simple pour Visual Basic(les numéros de ligne sont pour la commodité des commentaires uniquement) :

1 : Sous table2table ()

2: "

3: "macro qui enregistre la sélection de la table

4: "au format texte avec des marques de mise en forme

5: "

6 : Avec ActiveWindow.RangeSelection

7 : c1 = .Colonnes.Colonne

8 : c2 = .Columns.Count - 1 + c1

9 : r1 = .Lignes.Ligne

10 : r2 = .Rows.Count - 1 + r1

11 : Terminer par

12 : Si (r1 - r2 = 0 Et c1 - c2 = 0) Alors

13 : MsgBox _

14 : "quelque chose d'un peu mis en évidence (pour sauvegarder), -)", _

15 : vbCritical, « macro message »

16 : Fin si

17 : fileSaveName = Application.GetSaveAsFilename (_

18 : InitialFileName : = "fichier", _

19 : fileFilter : = "Fichiers texte (* .txt), * .txt", _

20 : Titre : = "enregistrer la page dans notre format")

21: Si fileSaveName = False Then

22 : MsgBox _

23 : "aucun fichier sélectionné. Aucune action entreprise.", _

24 : vbCritical, « macro message »

25 : Autre

28: Ouvrir le fichier Enregistrer le nom pour la sortie en tant que n ° 1

29 : Pour r = r1 À r2

30 : l = CStr (Lignes (r) .RowHeight)

31 : pour c = c1 à c2

32 : Avec des cellules (r, c)

33 : l = l + sep + CStr (.Text) + _

37 : Terminer par

38 : Suivant

39 : Imprimer n° 1, l

40 : Suivant

41 : Fermez le n° 1

42 : Fin si

43 : Sous-marin de fin

Cette macro enregistre la partie sélectionnée de la liste de prix dans le fichier spécifié. La macro peut être ajoutée à la version de travail de la liste de prix et appelée un bouton (en dehors de la zone d'impression), ou elle peut être stockée dans fichier séparé... Il est très simple de le placer dans un document : appelez l'éditeur Visual Basic (menu : "Outils -> Macro -> Visual Basic Editor" ; ou ), créez un nouveau module (menu : "Insertion -> Module") et saisissez le texte affiché ici (sans les numéros de ligne). Vous pouvez maintenant dessiner un bouton (un outil du panneau Formulaires) et lui affecter une macro.

Voyons rapidement comment fonctionne ce code.

La première ligne est la déclaration de la macro. Comme vous pouvez le voir, je l'ai appelé simplement table2table, vous pouvez l'appeler plus sonore.

Aux lignes 6 à 11, nous définissons les limites de la partie sélectionnée du document (après tout, nous n'enregistrerons que la partie sélectionnée). Maintenant, c1 et c2 sont les premiers et derniers numéros de colonne, et r1 et r2 sont les première et dernière lignes de la sélection.

De plus, aux lignes 12 à 16, nous vérifions si la zone a été sélectionnée ou si notre macro doit fonctionner avec une seule cellule. Ceci, bien sûr, ne peut pas être fait, mais en fait, très probablement, ce ne sera pas vous qui exécuterez cette macro, mais les gestionnaires éditant la liste de prix, vous ne pouvez pas toujours compter sur leur précision. Ainsi, si rien n'a été sélectionné, notre macro émettra un avertissement (voir Fig. 2).

Sur les lignes 17 à 20, nous invoquons la boîte de dialogue Application.GetSaveAsFilename afin que l'utilisateur puisse sélectionner un nom de fichier (voir Figure 3).

Encore une fois, vous pouvez simplement donner un nom fixe, mais je pense que c'est gênant même si vous utilisez vous-même cette macro.

Les lignes 21 à 42 contiennent une construction if-then-else avec une vérification pour voir si le nom de fichier à enregistrer a été spécifié ou si l'utilisateur a appuyé sur le bouton Annuler de la boîte de dialogue Enregistrer sous....

Si l'utilisateur a refusé de sauvegarder, un message correspondant s'affiche (lignes 22 à 24), si le nom du fichier est spécifié, alors la chose la plus intéressante commence - la sauvegarde des données.

Mais avant de discuter de la procédure de stockage (lignes 26 à 41), disons quelques mots sur le format dans lequel nous avons l'intention de sauvegarder les données. Je suggère le format le plus simple à traiter : le texte ASCII. Chaque ligne correspond à une ligne du tableau à enregistrer. Les champs sont séparés par un délimiteur de caractère. Le premier champ est la hauteur de ligne (cette information est nécessaire pour filtrer les lignes "cachées"). Tous les champs suivants sont le contenu des cellules, mais chacun de ces champs contient plusieurs sous-champs, séparés par leurs propres séparateurs. Les sous-champs contiennent diverses informations sur une cellule : contenu, paramètres de formatage.

Nos séparateurs de champs et de sous-champs sont définis par des codes ASCII aux lignes 26 et 27, respectivement. Vous pouvez choisir des séparateurs plus pratiques. Par exemple, si vous êtes sûr que vos données ne contiennent jamais le caractère ":", vous pouvez le prendre comme séparateur ou subdivision.

Parcourons les lignes (ligne 29).

Calculez la hauteur de chaque ligne. En même temps, nous commençons à préparer une ligne à enregistrer dans un fichier dans la variable l (ligne 30 du listing).

Dans une boucle (ligne du Listing 31) sur les cellules de la ligne du tableau en cours d'enregistrement, ajoutez à la ligne l toutes les informations sur les cellules qui nous intéressent, en lui fournissant des délimiteurs.

Quelles propriétés de la cellule économisons-nous ?

La première étape est le texte de la cellule. Notez que nous utilisons la propriété .Text, pas la propriété .Value. Ce n'est pas un hasard. La propriété .Value renvoie le vrai contenu de la cellule, la propriété .Text renvoie le texte affiché sur le moniteur et imprimé. Ces deux valeurs peuvent ne pas coïncider (et ne coïncident généralement pas), car les valeurs sont affichées à l'écran selon le format de cellule spécifié (par exemple, les nombres sont affichés avec un nombre spécifié de décimales).

La propriété .MergeCells indique si la cellule fait partie d'un groupe de cellules fusionnées.

La propriété .Font.Bold reflète le gras du texte dans la cellule.

La propriété .Font.Strikethrough indique si le texte a été barré.

Pour notre exemple, nous n'aurons probablement besoin de rien d'autre. Cependant, je ne peux que mentionner un certain nombre de propriétés utiles qui peuvent vous être utiles. Les noms de ces propriétés sont assez éloquents, et je ne les commenterai pas, je me limiterai à lister :

  • .Nom.de.la.police
  • .Font.FontStyle
  • .Taille de police
  • .Font.Souligné
  • .Font.ColorIndex
  • .Font.Italique
  • .HorizontalAlignment
  • .Alignement vertical
  • .ColorIndex
  • .Modèle

Notez que toutes les propriétés sont explicitement converties en type chaîne par la fonction CStr (lignes 33 à 36). Il s'agit d'une procédure très utile qui vous évite à jamais tous les maux de tête liés aux conversions de type.

Une mise en garde importante doit être faite ici. Le fait est que la fonction CStr n'est pas capable de gérer des valeurs indéfinies. Si tel est le cas dans vos documents, alors au lieu de CStr, vous pouvez utiliser votre propre fonction pour convertir les valeurs au format texte. Par exemple safeCStr :

1: Fonction safeCStr (p As Variant) As String
2: Si IsNull (p) Alors safeCStr = "" Sinon safeCStr = CStr (p)
3: Fonction de fin

Je dois préciser que je n'ai moi-même jamais rencontré de telles situations, mais le consultant scientifique et technique de la revue a facilement trouvé une liste de prix sur Internet, dans certaines cellules dont la propriété Font.Bold n'était pas définie. Je pense que de tels documents peuvent résulter de l'exportation de données à partir d'autres applications. Par exemple, les produits 1C peuvent exporter des données vers Excel. Bref, une telle situation est possible. - Note de l'auteur.

Alors, vous sélectionnez la zone enregistrée (dans notre exemple, ce sont les trois premières colonnes du tableau, lignes 4 à 21), cliquez sur le bouton que vous avez créé, sélectionnez le nom du fichier, et le fichier est enregistré. Que faire ensuite ?

Générer une page HTML à partir de données exportées

Vous pouvez faire ce que vous voulez avec ce fichier, car son format nous est parfaitement connu (c'est bien de le savoir). Je vais donner un exemple de génération d'une page HTML.

Comme je l'ai dit, je suggère un script Perl :

1 : #! / Usr / bin / perl -w

3: #use strict;

5: # mon ($ VRAI, $ FAUX) = ("Vrai", "Faux");

6 : mon ($ VRAI, $ FAUX) = ("Vrai", "Faux");

8 : sous qtnum (

9 : mon $ t = décalage ;

10 : $ t = ~ s |, (\ d +) |, $1|;

11 : retour $ t ;

12: }

14: sous qtstring (

15 : mon $ t = décalage ;

16 : $ t = ~ s / \ & / \ & / g;

17 : $ t = ~ s / \ "/ \" / g ;

18 : $ t = ~ s / \> / \> / g ;

19 : $ t = ~ s / \

20 : retour $ t ;

21: }

23 : imprimer<<"TEXT";

24:

25:

26: liste de prix d'une certaine entreprise

27:

32:

33:

34:

35:

36:

37:

38:

39:

40:

41:

42:

43:

44:

45:

46:

47:

48:

49:

50 : TEXTE

52 : tandis que (<>) {

53 : s / [\ x0A \ x0D] + $ // ;

54 : mon @f = split / \ x09 / ;

55 : mon $ lh = décalage @f ;

56 : my ($ nom, $ us, $ rub) = map () @f ;

57 : si ($ lh) (

58 : if ($ name-> eq $ TRUE) (# en-tête de section de traitement

59 : imprimer "

\ n ";

62:) else (# traitement d'une ligne normale

63 : imprimer<<"TEXT" .

64:

65 : onMouseOver = "this.className =" al ";"

66 : onMouseOut = "this.className =" ";">

\ n \ n \ n ";

80: }

81 : imprimer<<"TEXT";

82:

83:

84 : TEXTE

85 :) sinon (

86 : avertissement "ligne cachée : ». $ Nom ->. « \ N » ;

87: }

88: }

90 : impression<<"TEXT";

91:

liste de prix d'une certaine entreprise
Nom du produit le prix
cu frotter.
" .

60 : $ nom->.

61: "

67 : TEXTE

68 : ($ nom-> eq $ VRAI ? " ":"") .

69 : qtstring ($ nom->).

70 : ($ nom-> eq $ VRAI ? "":"") .

71 : qq |

| .

72 : ($ usd-> eq 

$ VRAI ?" ":"") .

73 : qtnum ($ usd->).

74 : ($ usd-> eq $ TRUE ? "":"") .

75 : qq |

| .

76 : ($ rub-> eq 

$ VRAI ?" ":"") .

77 : qtnum ($ rub->).

78 : ($ rub-> eq $ TRUE ? "":"") .

79: "

92:

93:

94 : TEXTE

Le script prend l'entrée d'un fichier spécifié en tant que paramètre de ligne de commande ou d'une entrée standard et imprime le code HTML sur la sortie standard. C'est-à-dire que vous pouvez l'exécuter comme ceci :

perl fichier2html.pl fichier.txt> fichier.html

ou, par exemple, comme ceci :

chat fichier.txt | perl fichier2html.pl> fichier.html

Voyons comment fonctionne ce script (je suppose que le lecteur est un peu familiarisé avec Perl).

La première ligne est la ligne magique standard de tout script UNIX. Les utilisateurs de Windows peuvent l'ignorer. La troisième ligne contient l'instruction use strict commentée. Cela ne vous sera utile que lors du débogage.

Aux lignes 5 et 6, nous définirons les variables $ TRUE et $ FALSE, qui contiendront les valeurs vraies et fausses retournées par Excel. Le fait est que le russe Excel utilise des mots russes, européens - anglais. Commentez la ligne qui vous convient et commentez la ligne supplémentaire.

La procédure qtnum (lignes 8 à 12) ajoute des balises à l'enregistrement numérique, transformant "3.14" en "3, 14". C'est-à-dire que les cents et les centimes seront affichés dans une police plus petite. Il s'agit d'une mesure purement cosmétique.

La routine qtstring (lignes 13 à 21) cite les caractères "non sûrs": & (et), "(double quote),< (больше), >(plus petite). Il s'agit, comme vous le comprenez, d'une mesure obligatoire.

Les lignes 23 à 50 impriment l'en-tête du document HTML.

Dans la boucle while (lignes 52 à 88), nous lisons le fichier d'entrée ligne par ligne, le convertissons en un document HTML et l'écrivons dans stdout.

A la ligne 53, le ou les caractères de fin de ligne sont coupés de la ligne de lecture suivante. Je n'utilise pas les fonctions standard chop et chomp de Perl, car le fichier en cours de traitement est créé sous Windows, et le gestionnaire (notre script Perl) peut également fonctionner sous UNIX. Le fichier peut être transféré de manière très exotique. Par exemple, de nombreuses personnes voudront probablement modifier légèrement mon code et le transformer en une application CGI pour administrer leur propre serveur. Par conséquent, je ne m'appuie pas sur les fonctions standard, mais j'écris explicitement que je dois supprimer tous les caractères \ x0A et \ x0D à la fin de la ligne.

Le premier champ, la hauteur de ligne, est stocké dans la variable $ lh (ligne 55). Tous les autres champs sont subdivisés en sous-champs. En conséquence, les variables $ name, $ usd, $ rub se voient attribuer des pointeurs vers des tableaux contenant toutes les informations nécessaires sur le contenu et la mise en forme de la cellule correspondante. $ name - cellule avec le nom du produit, $ usd - cellule avec le prix en dollars, $ rub - cellule avec le prix en roubles. Cela se fait avec une seule ligne 56.

Si la hauteur de ligne n'est pas nulle, alors nous exécutons le bloc de 58 à 84 lignes. Sinon, nous envoyons un avertissement au flux d'erreur standard stderr qu'une chaîne cachée a été détectée et ignorée (ligne 86).

Le traitement des lignes du tableau peut sembler compliqué à première vue.

Tout d'abord, nous comprenons à quoi nous avons affaire : à la ligne 58, nous vérifions la véracité de la propriété MergeCells de la cellule portant le nom du produit. Si cette cellule est fusionnée, alors il s'agit de l'en-tête de section, alors le code qui génère l'en-tête est exécuté (lignes 59 à 61).

S'il s'avère que nous avons affaire à une ligne régulière, alors le bloc else est exécuté (lignes 63 à 79). Ici, une ligne d'un tableau HTML est formée, dans laquelle des éléments de mise en forme supplémentaires sont insérés (pour ces lignes de tableau si nécessaire).

Notez que nous avons intégré une astuce DHTML de base dans notre document. La ligne sur laquelle se trouve le pointeur de la souris est toujours mise en surbrillance dans le tableau. Cela rend le tableau plus facile à lire. Convenez qu'il est difficile d'obtenir un tel effet en utilisant Excel (en enregistrant un document en tant que page Web).

Les lignes 90 à 94 affichent les balises de fin du document. Veuillez noter qu'il doit y avoir une ligne vide à la fin du fichier avec le programme. Sinon, le dernier mot ("TEXT") (ligne 94) ne sera pas correctement traité par l'interpréteur Perl.

La sortie est indiquée sur la figure (p. 82).

D'accord, il y avait quelque chose pour quoi se battre !

BUGS. Que pouvez-vous ajouter d'autre ?

Je n'ai aucun doute que bien que mes exemples soient pleinement fonctionnels, peu de gens les utiliseront sans la moindre modification. Je veux jeter quelques réflexions sur ce qui peut être amélioré dans ces scripts afin que lors de leur modification, vous ne fassiez pas de travail inutile, mais tuiez autant d'oiseaux que possible à la fois.

Scripté en Visual Basic

Ici, vous devrez probablement modifier l'ensemble des paramètres de cellule enregistrés. Je fournis une liste des plus utiles dans la discussion de ce scénario. Si vous avez besoin de quelque chose d'exotique, reportez-vous à la documentation Microsoft, Range Object Properties.

Probablement, beaucoup considéreront comme un défaut que la macro remplace définitivement les fichiers existants (si vous spécifiez un fichier existant à enregistrer). Ceci, comme vous pouvez l'imaginer, est facile à corriger.

Probablement, pour de vrais documents, il sera facile de formuler les conditions selon lesquelles la macro déterminera elle-même la zone de la liste de prix (ou autre document) à enregistrer. Ensuite, ce processus peut être automatisé. Ma solution (garder la zone sélectionnée) est plus polyvalente que pratique.

Enfin, le lecteur peut se demander à juste titre pourquoi une macro pour Excel enregistre des lignes cachées, car elles peuvent être éliminées déjà au stade de l'export ? Chapeau à l'attention du lecteur (en espérant secrètement un geste réciproque à mon discernement). Garder les lignes cachées n'est vraiment pas nécessaire du tout, je suis juste habitué à tout sauvegarder. Causes ? Vous aurez peut-être encore besoin de lignes cachées. Ou vous voudrez peut-être savoir exactement quelles lignes ont été ignorées (mon script Perl, comme vous vous en souvenez, signale chaque ligne cachée). De plus, les informations sur la hauteur des lignes peuvent être un critère d'identification des en-têtes ... bien que vous puissiez bien sûr modifier légèrement le code VB et ne pas garder les lignes cachées.

Script Perl

Bien sûr, tout le code HTML (qui est la majeure partie du script) est susceptible de changer de manière significative. Bien sûr, vous devrez modifier le nombre de colonnes, l'en-tête, beaucoup supprimeront mes lignes de séparation vides du code HTML, ajouter des tableaux imbriqués, modifier des fonctions DHTML, ajouter des tableaux CSS... Mais ce n'est pas le plus important et pas un changement fondamental.

Très probablement, vous devrez "apprendre" ce script à diviser les documents volumineux en sections et à enregistrer ces sections dans différents fichiers, car la liste de prix d'une entreprise très moyenne au format HTML peut tirer des centaines de kilo-octets. Tous les voyageurs Web n'attendront pas qu'un tel document soit téléchargé. Vous souhaiterez peut-être ajouter un tri (si les articles dans la liste de prix imprimée et dans la liste de prix Web doivent apparaître dans un ordre différent).

Sans aucun doute, la fonction de comparaison du prix actuel avec le précédent sera utile, ce qui ajoutera des informations sur les mises à jour et la dynamique des prix.

Je vous conseillerais d'organiser ces procédures (non directement liées à la mise en page HTML) sous la forme de programmes ou de modules séparés. D'ailleurs, une partie du travail de mise en page HTML peut être confiée au mécanisme SSI, et laisser le script récupérer le document SHTML. Un ensemble d'outils simples est toujours plus pratique, flexible et maniable qu'un outil universel. Éloignez-vous du râteau sur lequel marchent les créateurs du téléphone à micro-ondes et de la brosse à dents TV.

La liste de conseils et de suggestions est interminable, mais je pense que j'ai déjà éveillé votre imagination et que vous pourrez alors vous débrouiller sans moi. Adapter l'exemple donné ici à vos conditions spécifiques peut prendre plusieurs heures de travail. Mais vous serez alors généreusement récompensé, car vous effectuerez toutes les mises à jour ultérieures des informations sur votre serveur Web en quelques clics de souris et de clavier !


En contact avec

Si vous avez créé une belle feuille de calcul Excel et que vous souhaitez maintenant la publier en tant que page Web, le moyen le plus simple de le faire est de l'exporter dans un bon vieux fichier HTML. Dans cet article, nous examinerons plusieurs façons de convertir des données d'Excel en HTML, déterminerons les avantages et les inconvénients de chaque méthode et effectuerons cette conversion étape par étape avec vous.

Convertir des tableaux Excel en HTML à l'aide de l'outil Enregistrer en tant que page Web

Supposons que vous ayez créé un rapport multifonctionnel dans Excel et que vous souhaitiez maintenant exporter toutes ces informations, ainsi qu'un graphique et un tableau croisé dynamique, vers le site Web de l'entreprise afin que vos collègues puissent les voir en ligne via des navigateurs Web sans ouvrir Excel.

Suivez ces étapes pour convertir les données Excel en HTML. Ces instructions sont valables pour Excel 2013, 2010 et 2007.


Conseil: Si c'est la première fois que vous convertissez un classeur Excel en fichier HTML, il est sage d'enregistrer d'abord la page Web sur votre disque dur afin de pouvoir apporter des modifications si nécessaire avant de publier la page sur Internet ou sur un réseau local.

Commenter: Le HTML généré par Excel n'est pas très propre ! Ce sera génial quand, après avoir transformé un grand tableau avec un design complexe, vous l'ouvrez dans n'importe quel éditeur HTML et nettoyez le code avant de le publier. En conséquence, la page du site se chargera sensiblement plus rapidement.

5 choses à garder à l'esprit lors de la conversion de fichiers Excel en HTML

Lors de l'utilisation de l'outil Enregistrer sous la page Web, il est important de comprendre le fonctionnement de ses principales options afin d'éviter de commettre les erreurs les plus courantes et d'éviter les messages d'erreur les plus courants. Dans cette section, vous trouverez un aperçu rapide des options qui doivent être prises en compte lors de la conversion de fichiers Excel en HTML.

1. Fichiers de support et liens hypertexte

Comme vous le savez, les pages Web contiennent souvent des images et d'autres fichiers de support, ainsi que des hyperliens vers d'autres sites Web. En convertissant un fichier Excel en page Web, l'application collecte automatiquement les fichiers et les liens hypertexte associés pour vous et les enregistre dans un sous-dossier.

Lorsque vous enregistrez des fichiers de support tels que des graphiques et des textures d'arrière-plan sur le même serveur Web, Excel crée tous les liens relatif... Un lien relatif (URL) pointe vers un fichier du même site Web ; il spécifie le nom du fichier ou le dossier racine au lieu du nom complet du site (par exemple, href = "/ images / 001.png"). Lorsque vous supprimez un élément stocké en tant que lien relatif, Microsoft Excel supprime automatiquement le fichier lié du dossier auxiliaire.

Ainsi, la règle principale est conservez toujours votre page Web et les fichiers de support au même endroit sinon, la page Web ne s'affichera pas correctement. Si vous déplacez ou copiez votre page Web vers un emplacement différent, assurez-vous de copier le sous-dossier au même emplacement, sinon les liens seront incorrects. Si vous réenregistrez la page Web à un autre emplacement, Microsoft Excel copiera automatiquement le sous-dossier à côté.

Si vous enregistrez des pages Web à différents emplacements ou si le fichier Excel contient des liens hypertexte vers des sites Web externes, alors dans de tels cas, absolu liens. Les liens absolus contiennent le chemin complet d'un fichier ou d'une page Web accessible de n'importe où, par exemple : www.votredomaine/section/page.htm.

2. Apporter des modifications et réenregistrer la page Web

En théorie, vous pouvez enregistrer le classeur Excel en tant que page Web, puis ouvrir la page Web résultante dans Excel, apporter des modifications et réenregistrer le fichier. Cependant, dans ce cas, certaines fonctionnalités d'Excel ne seront pas disponibles. Par exemple, tous les graphiques contenus dans votre classeur se transformeront en dessins indépendants et vous ne pourrez plus les modifier dans Excel, comme vous le faisiez auparavant.

Par conséquent, le meilleur moyen consiste d'abord à mettre à jour le classeur Excel d'origine avec quelques modifications, puis à l'enregistrer en tant que classeur Excel (.xlsx), puis à le reconvertir en page Web.

3. Republier automatiquement une page Web

Si vous avez coché la case à côté du paramètre Republier automatiquement(Réimpression automatique) dans la boîte de dialogue Publier en tant que page Web(Publier une page Web) que nous avons mentionné plus tôt dans cet article, votre page Web s'actualisera automatiquement chaque fois que vous enregistrerez le classeur. Cette fonctionnalité est très utile et vous permet de toujours conserver une copie en ligne à jour de votre feuille de calcul Excel.

Si vous activez le paramètre Republier automatiquement(Réimpression automatique), puis chaque fois que vous enregistrez un classeur, un message apparaîtra vous demandant de confirmer si vous souhaitez activer ou désactiver la réimpression automatique. Si vous souhaitez que la feuille Excel soit automatiquement publiée, sélectionnez Permettre ...(Activer ...) et cliquez sur d'accord.

Cependant, il peut arriver que vous ne souhaitiez pas publier automatiquement la feuille Excel ou ses éléments, par exemple si le fichier contient des informations confidentielles ou a été modifié par une personne qui n'est pas une personne de confiance. Dans ce cas, vous pouvez désactiver temporairement ou définitivement la réédition automatique.

Pour désactiver temporairement la réimpression automatique, sélectionnez la première des options suggérées dans le message ci-dessus - Désactiver la fonctionnalité de réédition automatique lorsque ce classeur est ouvert(Désactivez la fonction de réimpression automatique lorsque ce livre est ouvert). Cela désactivera la publication automatique pour la session Excel en cours, mais la prochaine fois que vous ouvrirez le classeur, il sera à nouveau activé.

Pour désactiver la réimpression automatique de façon permanente pour tous les éléments sélectionnés, ouvrez un classeur Excel, accédez à la boîte de dialogue Publier en tant que page Web(Publier la page Web) et cliquez sur Publier(Poster). Au chapitre Éléments à publier(Articles publiés) dans la liste Choisir(Sélectionnez) sélectionnez l'élément que vous ne souhaitez pas publier et cliquez sur le bouton Supprimer(Effacer).

4. Fonctionnalités Excel non prises en charge sur les pages Web

Malheureusement, certaines fonctionnalités Excel très utiles et populaires deviennent indisponibles lorsque vous convertissez vos feuilles Excel en HTML :

  • Ontmise en forme des mots non pris en charge lors de l'enregistrement de la feuille Excel sous Page Web à fichier unique(page Web dans ce fichier), assurez-vous donc de l'enregistrer sous Page Web(Page Web). Les graphiques à barres, les barres de couleurs et les jeux d'icônes ne sont pas pris en charge par les deux formats de page Web.
  • Tourné ou vetexte vertical non pris en charge lors de l'exportation de données d'Excel au format de page Web. Tout texte pivoté ou vertical dans votre classeur sera converti en texte horizontal.

5. Les difficultés les plus courantes rencontrées lors de la conversion de fichiers Excel en HTML

Lors de la conversion d'un classeur Excel en page Web, vous pouvez rencontrer les difficultés connues suivantes.

Parfois un responsable vient et dit : - Je veux voir ce tableau sur le site.
Et part.
Deux chemins standards émergent :
- soit via un certain panneau d'administration dans l'éditeur, sculptez un tableau et remplissez-le de valeurs ;
- soit avec des poignées directement en html et aussi à remplir avec des valeurs.
Et ce n'est pas grave s'il y a 3x5 cellules, mais s'il y en a plus.

Face à cela il y a quelques années, j'ai découvert une méthode basée sur l'utilisation de Windows Live Writer (logiciel d'écriture et d'envoi d'articles vers certaines plateformes de blogs).

C'est simple. Collez le tableau copié dans WLW avec une pâte spéciale, en préservant le format

Ensuite, allez dans l'onglet du bas "Source" dans WLW et copiez à partir du champ tout le code énorme

Il s'avère de cette façon ou presque de la même manière que dans l'original. Le temps ne prend que quelques secondes, à l'exception des coûts ponctuels de connexion de WLW à un compte de blog.
Un exemple est ici codepen

En conséquence, nous obtenons une seule page avec 320 lignes de texte.

Là encore faut-il trouver ce qu'il faut utiliser...

Par exemple, prenons une feuille de calcul Excel composée de 4 colonnes et 12 lignes.
Colonne A - numérotation des articles dans l'ordre croissant des lignes d'articles
Colonne B - nombre d'objets
Colonne C - prix d'un article
Colonne D - la somme du coût des articles sur une ligne comme le produit du prix de l'article par leur quantité
Colonne D cellule D12 - la somme du coût de tous les articles

Il va sans dire que la table elle-même sous la forme exceller déposer ne peut pas être logé dans les matériaux du site pour diverses raisons. Pour son placement, sa publication sous la forme d'une représentation textuelle des données, il est nécessaire conversion en HTML format compatible.

Ajouter d'abord avant le tableau encore une ligne, Souligné cadre rouge .
Puis, avant chaque colonne du tableau, ajoutez encore une colonne, ajouter 4 colonnes supplémentaires, sélectionné cadres verts .

En conséquence, nous obtenons un tableau composé de 8 colonnes et 13 lignes.

Dans la cellule A1 sous forme de texte que nous écrivons HTMLétiquette de tableau


Dans les cellules de la gamme A2-A11 avant chaque cellule de colonne B sous forme de texte, écrivez l'ouverture HTML balises de ligne et de cellule
Dans la cellule I14 comme texte, écrivez la fermeture HTMLétiquette de tableau

Dans les cellules de plage C2-C11 , E2-E11 , G2-G11 avant chaque cellule de colonne , F et H sous forme de texte, écrivez la fermeture et l'ouverture HTML balises de cellule

Dans les cellules de la gamme I2-I13 après chaque cellule de colonne H sous forme de texte, écrivez la clôture HTML balises de cellule et de ligne

Plus loin dans les cellules A12 et A13 comme texte, écrivez l'ouverture HTML balise de ligne et ouverture HTML balise de cellule avec attribut colspan concaténer en chaînes 12 et 13 Colonnes B , et F dans une cellule

En conséquence, nous obtenons un tableau rempli de données initiales dans exceller formater et Balises HTML comme texte.

Plus loin dans Éditeur Excel, sélectionnez la table dans la gamme A1-I13, dans le menu programme, sélectionnez la commande "Enregistrer sous" et enregistrez la sélection sous fichier texte(par exemple - tabltxt.txt), l'encodage n'a pas d'importance, vous pouvez enregistrer comme dans l'encodage UTF-8 et en encodage Mme-DOS... Excel affichera une fenêtre d'avertissement :

Appuyez sur la touche "D'ACCORD" et Excel affichera à nouveau une fenêtre d'avertissement :

Appuyez sur la touche "OUI" et le fragment sélectionné sera enregistré en tant que fichier texte tabltxt.txt

De plus, le travail ultérieur sur la conversion est transféré à l'éditeur HTML, en principe, tout le reste peut être fait dans un simple éditeur de texte, mais option avec éditeur HTML plus préférable.

Ouvrir le fichier tabltxt.txt dans n'importe quel éditeur de texte, sélectionnez tout le contenu sous forme de texte et collez-le dans HTMLéditeur dans Mode HTML... Obtenons le texte source HTML suivant du tableau. Vous pouvez également prendre la sélection du fichier enregistré à partir d'Excel. La seule différence est que, selon l'encodage du fichier enregistré, il peut contenir "artefacts" sous forme de caractères supplémentaires comme vous pouvez le voir dans la capture d'écran dans les cellules ( " " ).

Ensuite, nous supprimons tout "artefacts" le cas échéant, et tous les espaces. On écrit aussi Style CSS pour les cellules du tableau : td (remplissage : 1px 12px ; text-align : center ;) En conséquence, nous obtiendrons le texte HTML original du tableau au format HTML. (la capture d'écran est affichée telle quelle sans formatage HTML structurel comme si elle avait l'air dans un éditeur de texte)... Sous cette forme, le texte source du tableau peut être utilisé comme tableaux HTML données à publier dans le matériel, puisqu'il s'agit d'un format purement HTML.

Après avoir enregistré le tableau en tant que fichier HTML et l'avoir consulté dans le navigateur, nous obtenons l'affichage suivant du tableau converti du format Excel au format HTML.

La signification de toutes les actions ci-dessus se réduit à une seule chose :

1 . Formulaire avant chaque ligne du tableau Excel, ligne HTML et début Cellules HTML.
2 . Formez entre les colonnes du tableau excel, la fin d'une et le début d'une autre cellule HTML.
3 . Générez après chaque ligne du tableau excel, la fin des cellules et des lignes HTML.
4 . Formez au début et à la fin du tableau excel, le début et la fin du tableau HTML sous forme de balise de tableau.

Il va sans dire que pour un affichage plus présentable des données de la table, vous devez écrire les classes CSS dans Balises HTML lignes et cellules du tableau. Par exemple, avec des attributs d'indentation, de couleur et de style de police, de bordures et d'autres motifs. Mais il s'agit d'un sujet distinct qui n'est pas pris en compte dans ce document ...