Maison / Skype / 1s enregistrer le document de feuille de calcul dans Excel. Astuces pour enregistrer un document de feuille de calcul dans Excel pour un travail ultérieur avec celui-ci. Télécharger sans programmation

1s enregistrer le document de feuille de calcul dans Excel. Astuces pour enregistrer un document de feuille de calcul dans Excel pour un travail ultérieur avec celui-ci. Télécharger sans programmation

Pour la poursuite des travaux avec les données reçues dans un tableur du système 1C de n'importe quelle version, elles peuvent être enregistrées au format xls (x).

Tout irait bien, mais lorsqu'il est ouvert dans Excel-e, l'utilisateur comprend immédiatement que quelque chose ne va pas avec le tableau, eh bien, oui, il n'y a pas d'étiquettes de feuille de livre. %)

C'était donc dans la 7ème version de 1C et migré vers la 8ème, oui, il y a des progrès, en 8-ke vous pouvez enregistrer au format xlsx, format natif dernières versions Excel I.

Pour résoudre le problème, il existe plusieurs manipulations simples, la première chose qui vient à l'esprit pour tout utilisateur est de réenregistrer le tableau dans un format différent, mais même ici il n'y a pas de résultat souhaité, puis on commence à copier-coller dans un nouveau livre Exceller.
Il existe une autre option, pour ainsi dire pour les utilisateurs avancés, qui consiste à accéder aux paramètres Excel et dans la section Avancé cochez la case "Afficher les étiquettes de feuille". C'est correct, mais aussi routinier, à la lumière du traitement fréquent des données reçues de 1C sous forme de tableaux plats et d'une analyse plus poussée des données sous forme de tableaux croisés dynamiques et d'autres manières de présenter les données dans Excel.

De la même manière, j'en ai eu assez de courir sur les cases à cocher et j'ai résolu le problème, en fouillant sur Internet, par exemple, et en regardant d'autres développements, il s'est avéré implémenter un simple (pour certains c'est un accordéon à boutons, pour certains c'est une béquille, cependant, ils ne discutent pas des goûts) mécanisme d'automatisation résolvant le problème d'affichage des étiquettes de feuille.

Il vous suffit d'utiliser deux propriétés de la fenêtre Excel :

DisplayWorkbookTabs // indicateur d'affichage des onglets de feuille de livre TabRatio // rapport de la largeur de la zone d'onglet du classeur à la largeur de la barre de défilement horizontale de la fenêtre (sous forme de nombre compris entre 0 (zéro) et 1, valeur par défaut 0,6)

TabDocument.Write(FullFileName, FileTypeSpreadDocument.XLS); Excel = New COMObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1 ; Excel.ActiveWindow.TabRatio = 0,6 ; NomComplet = Excel.ActiveWorkbook.NomComplet ; Excel.DisplayAlerts = faux ; Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - XLS 97-2003 ; 51 - xlsx 2007-2013 //Excel.Visible = 1; // si vous avez besoin de travailler plus loin avec le livre
//Excel.Application.Quit() // si nous quittons

TabDocument.Write(NomFichierComplet, "XLS"); Excel = CreateObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1 ; Excel.ActiveWindow.TabRatio = 0,6 ; NomComplet = Excel.ActiveWorkbook.NomComplet ; Excel.DisplayAlerts = faux ; Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - XLS 97-2003 ; 51 - xlsx 2007-2013 //Excel.Visible = 1; // si vous avez besoin de travailler plus loin avec le livre
//Excel.Application.Quit() // si nous quittons

Pour un travail ultérieur avec les données obtenues dans un tableur à partir du système 1C de n'importe quelle version, elles peuvent être enregistrées au format xls (x).

Tout irait bien, mais lorsqu'il est ouvert dans Excel-e, l'utilisateur comprend immédiatement que quelque chose ne va pas avec le tableau, eh bien, oui, il n'y a pas d'étiquettes de feuille de livre. %)

C'était donc dans la 7ème version de 1C et migré vers la 8ème, oui, il y a des progrès, en 8-ke vous pouvez enregistrer au format xlsx, le format natif des versions récentes d'Excel-i.

Pour résoudre le problème, il existe plusieurs manipulations simples, la première chose qui vient à l'esprit pour tout utilisateur est de réenregistrer le tableau dans un format différent, mais même ici il n'y a pas de résultat souhaité, puis on commence à copier-coller dans un nouveau livre Exceller.
Il existe une autre option, pour ainsi dire pour les utilisateurs avancés, qui consiste à accéder aux paramètres Excel et dans la section Avancé cochez la case "Afficher les étiquettes de feuille". C'est correct, mais aussi routinier, à la lumière du traitement fréquent des données reçues de 1C sous forme de tableaux plats et d'une analyse plus poussée des données sous forme de tableaux croisés dynamiques et d'autres manières de présenter les données dans Excel.

De la même manière, j'en ai eu assez de courir sur les cases à cocher et j'ai résolu le problème, en fouillant sur Internet, par exemple, et en regardant d'autres développements, il s'est avéré implémenter un simple (pour certains c'est un accordéon à boutons, pour certains c'est une béquille, cependant, ils ne discutent pas des goûts) mécanisme d'automatisation résolvant le problème d'affichage des étiquettes de feuille.

Il vous suffit d'utiliser deux propriétés de la fenêtre Excel :

DisplayWorkbookTabs // indicateur d'affichage des onglets de feuille de livre TabRatio // rapport de la largeur de la zone d'onglet du classeur à la largeur de la barre de défilement horizontale de la fenêtre (sous forme de nombre compris entre 0 (zéro) et 1, valeur par défaut 0,6)

TabDocument.Write(FullFileName, FileTypeSpreadDocument.XLS); Excel = New COMObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1 ; Excel.ActiveWindow.TabRatio = 0,6 ; NomComplet = Excel.ActiveWorkbook.NomComplet ; Excel.DisplayAlerts = faux ; Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - XLS 97-2003 ; 51 - xlsx 2007-2013 //Excel.Visible = 1; // si vous avez besoin de travailler plus loin avec le livre
//Excel.Application.Quit() // si nous quittons

TabDocument.Write(NomFichierComplet, "XLS"); Excel = CreateObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1 ; Excel.ActiveWindow.TabRatio = 0,6 ; NomComplet = Excel.ActiveWorkbook.NomComplet ; Excel.DisplayAlerts = faux ; Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - XLS 97-2003 ; 51 - xlsx 2007-2013 //Excel.Visible = 1; // si vous avez besoin de travailler plus loin avec le livre
//Excel.Application.Quit() // si nous quittons

Cette méthode est simple. Son essence est que l'objet TableurDocument a des méthodes :

  • brûler (< ИмяФайла>, < ТипФайлаТаблицы >) pour télécharger des données dans un fichier ;
  • Lire (< ИмяФайла>, < СпособЧтенияЗначений >) pour charger les données d'un fichier.

Attention!

La méthode Write() est disponible à la fois sur le client et sur le serveur. La méthode Read() n'est disponible que côté serveur. Faut se souvenir de ça
lors de la planification de l'interaction client-serveur.

Prenons un exemple d'épargne feuille de calcul déposer. Il est nécessaire de créer et de remplir l'objet TableDocument de quelque manière que ce soit, et déchargement fichier se fait avec une seule ligne :

TabDoc . Écrire(CheminFichier, TypeFichierDocumentTableur.XLSX);

Ici TabDoc- tableur généré, Le chemin d'accès au fichier- le nom du fichier à uploader, TableurDocumentFileType.XLSX- mise en forme fichier créé. Les formats Excel suivants sont pris en charge :

  • XLS95- format Excel 95;
  • XLS97 - Format Excel 97 ;
  • XLSX est le format Excel 2007.

TabDoc = Nouveau document de feuille de calcul ;
TabDoc . Lire(PathToFile, WayToReadSpreadsheetDocumentValues.Value);

Ici Le chemin d'accès au fichier- Chemin d'accès au fichier Excel téléchargé. WayToReadValuesSpreadDocument.Value détermine comment interpréter les données lues à partir du document source. Options disponibles :

  • Signification;
  • Texte.

Échange via OLE

L'échange via la technologie d'automatisation OLE est peut-être l'option la plus courante programme de travail Avec Fichiers Excel. Il vous permet d'utiliser toutes les fonctionnalités fournies par Excel, mais est plus lent que les autres méthodes. Exchange via OLE nécessite l'installation de MS Excel :

  • Sur le poste de l'utilisateur final, si l'échange a lieu côté client ;
  • Sur l'ordinateur serveur 1C:Enterprise, si l'échange a lieu côté serveur.

Exemple déchargement:

// Créer un objet COM
Excel = New COMObject("Excel.Application");
// Désactiver les avertissements et les questions
Exceller . displayalerts = faux ;
// Créer un nouveau livre
Livre = Excel. cahiers d'exercices. ajouter();
// Positionnement sur la première feuille
Feuille = Livre. Feuilles de travail(1);

// Écrit la valeur dans la cellule
Feuille . Cellules (RowNumber, ColumnNumber). Valeur = CellValue ;

// Enregistrer le fichier
Livre . Enregistrer sous(NomFichier);


Exceller . Arrêter();
Excel = 0 ;

Exemples en lisant:

// -- OPTION 1 --

// Créer un objet COM
Excel = New COMObject("Excel.Application");
// Livre ouvert
Livre = Excel. cahiers d'exercices. Ouvrir( Le chemin d'accès au fichier );

Feuille = Livre. Feuilles de travail(1);

// Ferme le livre
Livre . Fermer(0);

// Ferme Excel et libère de la mémoire
Exceller . Arrêter();
Excel = 0 ;

// -- OPTION 2 --

// Livre ouvert
Livre = GetCOMObject( Le chemin d'accès au fichier );
// Positionnement sur la feuille souhaitée
Feuille = Livre. Feuilles de travail(1);

// Lit la valeur de la cellule, c'est généralement là que se trouve la boucle de contournement de cellule
CellValue = Feuille. Cellules (RowNumber, ColumnNumber). valeur;

// Ferme le livre
Livre . application. Qui t();

Pour contourne toutes les lignes complétées feuille de calcul Excel vous pouvez utiliser les méthodes suivantes :

// -- OPTION 1 --
Nombre de lignes = feuille. Cellules(1 , 1 ). Cellules spéciales(11 ). Ligne;
For RowNumber = 1 Par nombre de lignes Boucle
CellValue = Feuille. Cellules (RowNumber, ColumnNumber). valeur;
FinCycle ;

// -- OPTION 2 --
NuméroLigne = 0 ;
Tandis que la vraie boucle
NuméroLigne = NuméroLigne + 1 ;
CellValue = Feuille. Cellules (RowNumber, ColumnNumber). valeur;
Si NON ValueFilled(CellValue) Alors
avorter;
Fin si;
FinCycle ;

Au lieu de parcourir séquentiellement toutes les lignes de la feuille, vous pouvez vider toutes les données dans un tableau et travailler avec lui. Cette approche sera plus rapide lors de la lecture d'une grande quantité de données :

TotalColonnes = Feuille. Cellules(1 , 1 ). Cellules spéciales(11 ). Colonne;
Nombre total de lignes = Feuille. Cellules(1 , 1 ). Cellules spéciales(11 ). Ligne;

Région = Feuille. Range(Sheet.Cells(1 , 1 ), List.Cells(TotalRows, TotalColumns));
Données = Région. valeur. décharger();

Le tableau ci-dessous répertorie les propriétés et méthodes les plus demandées pour travailler avec Excel via OLE :

Action Code Un commentaire
Travailler avec l'application
Définition de la visibilité de la fenêtre d'application Exceller . visible= faux ;
Réglage du mode d'affichage des avertissements (afficher/ne pas afficher) Exceller . Afficher les alertes= faux ;
Fermeture de l'application Exceller . Arrêter();
Travailler avec un livre
Créer un nouveau livre Livre = Excel. cahiers d'exercices. Ajouter();
Ouvrir un classeur existant Livre = Excel. cahiers d'exercices. Ouvrir(NomFichier);
Enregistrer un livre Livre . Enregistrer sous(NomFichier);
fermeture du livre Livre . Fermer(0);
Travailler avec une feuille
Réglage de la feuille courante Feuille = Livre. Feuilles de Travail(NuméroFeuille);
Réglage du nom Feuille . Nom = Nom;
Réglage de la protection Feuille . Protéger();
Suppression des protections Feuille . Déprotéger();
Réglage de l'orientation des pages Feuille . Mise en page. Orientation = 2; 1 - portrait, 2 - paysage
Réglage de la bordure gauche Feuille . Mise en page. Marge gauche = Excel. CentimètresVersPoints(Centimètres);
Réglage de la limite supérieure Feuille . Mise en page. Marge supérieure = Excel. CentimètresVersPoints(Centimètres);
Définir la bordure droite Feuille . Mise en page. Marge droite = Excel. CentimètresVersPoints(Centimètres);
Définition de la borne inférieure Feuille . Mise en page. Marge inférieure = Excel. CentimètresVersPoints(Centimètres);
Travailler avec des lignes, des colonnes, des cellules
Réglage de la largeur de colonne Feuille . Colonnes (ColumnNumber). LargeurColonne = Largeur;
Suppression d'une ligne Feuille . Lignes (RowNumber). Supprimer();
Suppression d'une colonne Feuille . Colonnes (ColumnNumber). supprimer();
Suppression d'une cellule Feuille . Cellules (RowNumber, ColumnNumber). Supprimer();
Définition d'une valeur Feuille . Cellules (RowNumber, ColumnNumber). Valeur = Valeur;
Fusionner des cellules Feuille . Plage (feuille. Cellules (RowNumber, ColumnNumber), Feuille. Cellules (RowNumber1, ColumnNumber1)). Fusionner();
Installation de la police Feuille . Cellules (RowNumber, ColumnNumber). Police de caractère. Nom = Nom de la police;
Réglage de la taille de la police Feuille . Cellules (RowNumber, ColumnNumber). Police de caractère. Taille = Taille de la police;
Réglage de la police en gras Feuille . Cellules (RowNumber, ColumnNumber). Police de caractère. Gras = 1 ; 1 — caractère gras, 0 — normal
Mise en italique Feuille . Cellules (RowNumber, ColumnNumber). Police de caractère. Italique = 1 ; 1 - italique, 0 - normal
Définir une police soulignée Feuille . Cellules (RowNumber, ColumnNumber). Police de caractère. Souligner = 2 ; 2 - souligné, 1 - non

Pour savoir quelle propriété doit être modifiée ou quelle méthode appeler, vous pouvez utiliser macros Exceller. Si vous enregistrez une macro avec les actions requises, vous pouvez alors afficher le code du programme dans le VBA de la macro enregistrée.

Utilisation de COMSafeArray

Lors du déchargement de grandes quantités de données de 1C vers Excel, vous pouvez utiliser l'objet pour accélérer COMSafeArray. Selon la définition de l'assistant de syntaxe, COMSafeArray est un wrapper d'objet sur tableau multidimensionnel SafeArrayName de COM. Vous permet de créer et d'utiliser SafeArray pour échanger des données entre des objets COM. En termes simples, il s'agit d'un tableau de valeurs pouvant être utilisé pour échanger entre des applications utilisant la technologie OLE.

// Créer COMSafeArray
ArrayCom = New COMSafeArray("VT_Variant", TotalColumns, TotalRows);
// Remplir COMSafeArray
Pour Str = 0 nombre total de lignes - 1 boucle
Pour Nombre = 0 total de colonnes - 1 cycle
TableauCom . SetValue(Nombre, Chaîne, Valeur);
FinCycle ;
FinCycle ;
// Attribuer une zone de feuille valeurs excel de COMSafeArray
Feuille . Range(Sheet. Cells(1 , 1 ), List. Cells(TotalRows, TotalColumns)). Valeur = ArrayCom;

Échange via ADO

Un fichier Excel, lorsqu'il est échangé via ADO, est une base de données accessible à l'aide de requêtes SQL. L'installation de MS Excel n'est pas requise, mais un pilote ODBC est requis, à travers lequel l'accès sera effectué. Le pilote ODBC utilisé est déterminé en spécifiant la chaîne de connexion au fichier. Généralement, le pilote requis est déjà installé sur l'ordinateur.

L'échange via ADO est nettement plus rapide que l'échange via OLE, mais lors du déchargement, il n'y a aucun moyen d'utiliser la fonctionnalité Excel pour décorer des cellules, marquer des pages, définir des formules, etc.

Exemple déchargement:


Connexion = New COMObject("ADODB.Connexion");


Composé . Chaîne de connexion="

|DataSource=" + NomFichier + " ;
;
Composé . ouvrir(); // Ouvrir la connexion

// Crée un objet COM pour la commande
Commande = New COMObject("ADODB.Command");
Équipe

// Affecte un texte de commande pour créer une table
Équipe . texte de commande= "CREATE TABLE [Sheet1] (Column1 char(255), Column2 date, Column3 int, Column4 float)";
Équipe . exécuter(); // Exécution de la commande

// Affectation d'un texte de commande pour ajouter une ligne de tableau
Équipe . texte de commande= "INSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) values ​​​​('abvgdeo', '8/11/2017', '12345', '12345,6789')";
Commande.Execute(); // Exécution de la commande

// Suppression de la commande et fermeture de la connexion
commande = indéfini ;
Composé . fermer();
Connexion = Non défini;

Pour créer une nouvelle feuille et former sa structure, vous pouvez utiliser les objets ADOX.Catalogue Et ADOX.Table. Dans ce cas, le code ressemblera à :

// Crée un objet COM pour travailler avec le livre
Livre = New COMObject("ADOX.Catalog");
Livre . ActiveConnection = Connexion ;

// Crée un objet COM pour travailler avec la structure de données sur la feuille
Table = New COMObject("ADOX.Table");
Tableau . Nom = "Feuille1" ;
Tableau . Colonnes. Ajouter("Colonne1" , 202 );
Tableau . Colonnes. Ajouter("Colonne2" , 7 );
Tableau . Colonnes. Ajouter("Colonne3" , 5 );
Tableau . Colonnes. Ajouter("Colonne4" , 5 );

// Crée une feuille dans le livre avec la structure décrite
Livre . les tables. ajouter(tableau);
tableau = indéfini ;
livre = indéfini ;

Dans l'exemple ci-dessus, dans la méthode

Tableau . Colonnes. Ajouter("Colonne1", 202);

le deuxième paramètre spécifie le type de colonne. Le paramètre est facultatif, voici quelques valeurs de type de colonne :

  • 5-adDouble ;
  • 6 - adDevise ;
  • 7 - adDate ;
  • 11 - adBooléen ;
  • 202 - adVarWChar ;
  • 203-adLongVarWChar.

Exemple en lisant:

// Crée un objet COM pour la connexion
Connexion = New COMObject("ADODB.Connexion");

// Définir la chaîne de connexion
Composé . Chaîne de connexion="
|Fournisseur=Microsoft.ACE.OLEDB.12.0 ;
|DataSource=" + NomFichier + " ;
|Propriétés étendues=""Excel 12.0 XML;HDR=OUI"";";
Composé . ouvrir(); // Ouvrir la connexion

// Crée un objet COM pour recevoir une sélection
Sélection = New COMObject("ADODB.Recordset");
RequestText = "SÉLECTIONNER * À PARTIR DE [Feuille1$]";

// Exécute la requête
Goûter . Ouvrir(QueryText, Connexion);

// Ignore le résultat de la sélection
Sans échantillonnage. Boucle EOF()
ColumnValue1 = Sélection. des champs. Article("Colonne1"). valeur ; // Référencement par nom de colonne
Valeur colonne2 = sélection. des champs. Article(0 ). valeur; // Récupérer par index de colonne
Goûter . DéplacerSuivant();
FinCycle ;

Goûter . fermer();
Échantillon = non défini ;
Composé . fermer();
Connexion = indéfini ;

Dans la chaîne de connexion, le paramètre HDR détermine comment la première ligne de la feuille sera perçue. Options possibles :

  • OUI - la première ligne est perçue comme les noms des colonnes. Les valeurs sont accessibles par nom et par index de colonne.
  • NON - La première ligne est considérée comme une donnée. Les valeurs ne sont accessibles que par index de colonne.

Dans les exemples donnés, seuls quelques objets ADO sont pris en compte. Le modèle d'objet ADO se compose des objets suivants :

  • connexion;
  • commande;
  • jeu d'enregistrements ;
  • enregistrer;
  • des champs;
  • Flux;
  • les erreurs;
  • paramètres;
  • propriétés.

Télécharger sans programmation

Pour enregistrer les données de 1C vers Excel, il n'est pas toujours conseillé de recourir à la programmation. Si, en mode Entreprise, l'utilisateur peut afficher les données nécessaires au téléchargement, il est alors possible de les enregistrer dans Excel sans programmation.

Pour enregistrer un document de feuille de calcul (par exemple, le résultat d'un rapport), vous pouvez appeler la commande Sauvegarder ou Enregistrer sous… menu principal.

Dans la fenêtre qui s'ouvre, vous devez sélectionner le répertoire, le nom et le format du fichier enregistré.

Pour enregistrer des données listes dynamiques(par exemple, une liste d'articles), vous devez :

  1. Exporter les données vers une feuille de calcul à l'aide de la commande Plus ⇒ Afficher la liste...;
  2. Enregistrez le document de feuille de calcul dans le format requis.