
Delphi - zapis do excelu xlsx
Zdravím.
Neporadíl by někdo jak něco zapsat do excel tabulky v počitači, kde excel není nainstalovan?
Jsem našel toto https://delphi.cz/post/Native-Export-XLS-bez-excel-Delphi.aspx
Je to 8 roku stare a asi to xlsx umět nebude.
Dik.
Zkoušel jste někdy timto zpusobem něco upravit?
Přejmenují na zip a rozbalim do složky, vubec do toho nevlezu.
Zabalim to zpatky do zip a přejmenují na puvodní Sešit1.xlsx
Excel to pozna a neotevře
Pokud si s tím chceš hrát, tak řetězce najdeš v souboru:
\xl\sharedStrings.xml
a data pak v souboru (zalezi, na jménu listu):
\xl\worksheets\sheets1.xml
Jsem zkusil dat na bunky A1,A2,A3,A4 format čas 13:30 a do každe vložil 13:32
xl\worksheets\sheet1.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac xr xr2 xr3" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{A4B63BA3-17F1-49FE-BE14-4E0312EA7073}"><dimension ref="A1:B2"/><sheetViews><sheetView tabSelected="1" workbookViewId="0"><selection activeCell="B2" sqref="B2"/></sheetView></sheetViews><sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/><sheetData><row r="1" spans="1:2" x14ac:dyDescent="0.25"><c r="A1" s="1"><v>0.56388888888888888</v></c><c r="B1" s="1"><v>0.56388888888888888</v></c></row><row r="2" spans="1:2" x14ac:dyDescent="0.25"><c r="A2" s="1"><v>0.56388888888888888</v></c><c r="B2" s="1"><v>0.56388888888888888</v></c></row></sheetData><pageMargins left="0.7" right="0.7" top="0.78740157499999996" bottom="0.78740157499999996" header="0.3" footer="0.3"/></worksheet>
Nějake čudne to je, nikde těch 13:32 nevidím
Chce to číst odpovědi a pokud je i čteš, tak si je pamatovat.
Psal jsem, že datum a čas je v Excelu zapsán číslem, ne jako řetězec.
No a když mám v delphi čas jeko řetšzec, jak ho převedu na to číslo?
13:32:00 = 0.56388888888888888
Datum je ulozen jako číslo před desetinnou čárkou a začíná datem 0.1.1900. Takže 1.1.1900 = 1
Čas je uložen jako desetinná část čísla a znamená část dne (24h). Takže 6:00 = 0.25
Protože Delphi používá stejný systém, neměl bys mít problém to jednoduše převést. V Delphi je TDateTime typu double, takže stačí zapsat číslo, jak máš:
ExcelCislo := Double(DelphiDatum);