Utilisez libxlsxwriter pour exporter des fichiers xlsx en C ++.

Il faut du temps pour écrire une grande quantité de données dans un fichier xlsx avec Pythond, j'ai donc essayé d'utiliser la bibliothèque C ++. Il est utile pour exporter une grande quantité de données csv ou tsv vers xlsx sans utiliser Excel. J'ai oublié de comparer les vitesses, mais en raison de la différence de nébulosité, C ++ a pu exporter à grande vitesse. Je vais les comparer bientôt.

Dans le cas du fichier xlsx, il prend en charge jusqu'à 1 048 576 lignes et 16 384 colonnes.

libxlsxwriter

Une simple bibliothèque d'exportation xlsx pour C. Il est publié dans le Github Repository.

Une multitude d'exemples sont inclus.

Installation

Il peut être utilisé sans installation. Dans ce cas, il est nécessaire de spécifier le chemin.

$ git clone https://github.com/jmcnamara/libxlsxwriter.git
$ cd libxlsxwriter
$ make
$ sudo make install

Comment utiliser

L'entrée standard délimitée par des tabulations est sortie au format xlsx dans le fichier spécifié par l'argument, avec des tabulations comme délimiteurs de colonne de cellule.

Exemple de code

tsv2xlsx.cpp


#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string.hpp>
#include "xlsxwriter.h"

int main(int argc, char **argv) {
  //Vérification des arguments
  if (argc < 2){
    std::cerr << "Usage: " << argv[0] << " output_filename.xlsx" << std::endl;
  }

  //Créer des classeurs et des feuilles de calcul Excel
  lxw_workbook  *workbook  = workbook_new(argv[argc-1]); // argv[argc-1]Est le nom du fichier
  lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);

  std::vector<std::string> v_string;
  int row = 0;
  char input_text[51200]; //Tampon d'entrée standard(Il peut être préférable de recevoir une entrée standard avec un type de chaîne)
  while (std::cin.getline(input_text, sizeof(input_text))){
    row++;
    //Ne dépassez pas le nombre maximum de lignes.
    if(row == 1000000){
      break;
    }
    //Si l'entrée est vide, n'écrivez pas.
    if(!input_text[0]){
      continue;
    }
    //Séparez l'entrée avec des onglets.
    boost::split(v_string, input_text, boost::is_any_of("\t"));

	//1 sortie ligne
    for (int col = 0; col < v_string.size(); col++){
      worksheet_write_string(worksheet, row, col, v_string[col].c_str(), NULL);
    }
  }

  workbook_close(workbook);

  return 0;
}

Compiler et exécuter

% g++ tsv2xlsx.cpp -o tsv2xlsx -lxlsxwriter
% cat test.tsv | ./tsv2xlsx test.xlsx

Recommended Posts

Utilisez libxlsxwriter pour exporter des fichiers xlsx en C ++.
Extraire des informations à l'aide de File :: Stat dans Ruby
Ecrire le fichier O_SYNC en C et Python
Créez un fichier MIDI en Python en utilisant pretty_midi
Importez un fichier JPG à l'aide de l'API Google Drive en Python
J'ai essayé d'utiliser google test et CMake en C
Enregistrez collectivement des données dans Firestore à l'aide d'un fichier csv en Python
Créez votre premier fichier GDSII en Python en utilisant gdspy
Stocker la structure des nœuds en C ++ à partir du format de fichier NetworkX
Opérations sur les fichiers en Python
Gérer les signaux en langage C
Traitement de fichiers en Python
Accéder à MongoDB en C
Manipulation de fichiers avec Python
Indépendant du type à l'aide de modèles C ++
API C en Python 3
Obtenir des constantes de macro à partir du fichier d'en-tête C (++) (.h) en Python
[Python] Comment changer le fichier EXCEL enregistré dans xlsb en xlsx