[PYTHON] Verwenden Sie libxlsxwriter, um xlsx-Dateien in C ++ zu exportieren.

Es braucht Zeit, um mit Pythond eine große Datenmenge in eine xlsx-Datei zu schreiben, daher habe ich versucht, die C ++ - Bibliothek zu verwenden. Es ist nützlich, um eine große Menge von CSV- oder TsV-Daten ohne Verwendung von Excel nach xlsx zu exportieren. Ich habe vergessen, die Geschwindigkeiten zu vergleichen, aber aufgrund der unterschiedlichen Trübung konnte C ++ mit hoher Geschwindigkeit exportieren. Ich werde sie bald vergleichen.

Bei xlsx-Dateien werden bis zu 1.048.576 Zeilen und 16384 Spalten unterstützt.

libxlsxwriter

Eine einfache xlsx-Exportbibliothek für C. Es wird im Github Repository veröffentlicht.

Eine Fülle von Beispielen ist enthalten.

Installation

Es kann ohne Installation verwendet werden. In diesem Fall muss der Pfad angegeben werden.

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

Wie benutzt man

Die durch Tabulatoren getrennte Standardeingabe wird im xlsx-Format in die durch das Argument angegebene Datei ausgegeben, wobei Tabulatoren als Trennzeichen für Zellenspalten dienen.

Beispielcode

tsv2xlsx.cpp


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

int main(int argc, char **argv) {
  //Argumentprüfung
  if (argc < 2){
    std::cerr << "Usage: " << argv[0] << " output_filename.xlsx" << std::endl;
  }

  //Erstellen Sie Excel-Arbeitsmappen und Arbeitsblätter
  lxw_workbook  *workbook  = workbook_new(argv[argc-1]); // argv[argc-1]Ist der Dateiname
  lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);

  std::vector<std::string> v_string;
  int row = 0;
  char input_text[51200]; //Standardeingabepuffer(Es ist möglicherweise besser, Standardeingaben mit Zeichenfolgentyp zu empfangen)
  while (std::cin.getline(input_text, sizeof(input_text))){
    row++;
    //Überschreiten Sie nicht die maximale Anzahl von Zeilen.
    if(row == 1000000){
      break;
    }
    //Wenn die Eingabe leer ist, schreiben Sie nicht.
    if(!input_text[0]){
      continue;
    }
    //Trennen Sie die Eingabe mit Registerkarten.
    boost::split(v_string, input_text, boost::is_any_of("\t"));

	//1 Zeilenausgang
    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;
}

Kompilieren und ausführen

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

Recommended Posts

Verwenden Sie libxlsxwriter, um xlsx-Dateien in C ++ zu exportieren.
Extrahieren Sie Informationen mit File :: Stat in Ruby
Schreiben Sie die O_SYNC-Datei in C und Python
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
Laden Sie eine JPG-Datei mit der Google Drive-API in Python hoch
Ich habe versucht, Google Test und CMake in C zu verwenden
Registrieren Sie gemeinsam Daten im Firestore mithilfe der CSV-Datei in Python
Erstellen Sie Ihre erste GDSII-Datei in Python mit gdspy
Speichern Sie die Knotenstruktur in C ++ aus dem NetworkX-Dateiformat
Dateioperationen in Python
Verarbeiten Sie Signale in C-Sprache
Dateiverarbeitung in Python
Greifen Sie auf MongoDB in C zu
Dateimanipulation mit Python
Typunabhängig mit C ++ - Vorlagen
C-API in Python 3
Ruft Makrokonstanten aus der C (++) - Headerdatei (.h) in Python ab
[Python] So ändern Sie die in xlsb gespeicherte EXCEL-Datei in xlsx