Niechciana konwersja z plików xlsx

Niechciana konwersja z plików xlsx
PapiVPG
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 3 lata
  • Postów:15
1

Używam biblioteki xlnt w celu pobrania danych z Excela w języku c++. Podczas pobierania daty do mojego programu z komórki Excel'a, w której jest data w postaci "1992-01-23" dochodzi do konwersji i dostaję niepożądany wynik "33626". Tak się dzieje tylko w postaciach jak podałem wcześniej tzn. gdy w komórce jest data w postaci "1992/01/23" to dostaję na cout "1992/01/23" (czyli wszystko ok). Prawdopodobnie trudno będzie wskazać przyczynę tego bo jest to pewnie błąd w bibliotece, ale pamiętam że adres ip np. 192.168.0.1 można było zapisać w postaci inta i odwrotnie. Czy jest możliwość z liczby 33626 uzyskać datę "1992-01-23". Załączam przykładowy kod może się przyda..

Kopiuj
#include <iostream>
#include <xlnt/xlnt.hpp>

using namespace std;
int main(){
xlnt::workbook wb;
xlnt::worksheet ws = wb.active_sheet();
auto a =ws.cell(xlnt::cell_reference("A",1 )).to_string(); //w tym przypadku to_string() nie działa
//w komórce A1 jest data 1992-01-23
cout<<a<<endl;
}
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 dni
4

Przyczyna jest prosta

  • 1992/01/23 to nie jest data tylko tekst
  • Daty w excelu przechowywane w postaci liczby (dla wygody odejmowania i dodawania)
  • Jak chcesz wyeksportować to musisz skonwertować jako ilość dni od 31/12/1899 (1 => 1/1/1900)

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.