Jak vytvořit a naplnit datový model tabulky v C++
Tento průvodce ukazuje, jak vytvořit sešit, naplnit buňky hodnotami a vzorci, aplikovat styly a uložit jako soubor tabulky pomocí knihovny Aspose.Cells FOSS pro C++. Hlavní třídy, které jsou zapojeny, jsou Workbook, Worksheet, Cell a Style.
Návod krok za krokem
Krok 1: Nastavte sestavení
Přidejte knihovnu Cells FOSS do svého projektu CMake a propojte cíl Aspose.Cells.Foss.Cpp:
cmake_minimum_required(VERSION 3.15)
project(CreateSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(CreateSpreadsheet main.cpp)
target_link_libraries(CreateSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)Krok 2: Zahrňte hlavičkové soubory a nastavte jmenný prostor
Zahrňte hlavičkové soubory pro jednotlivé třídy z aspose/cells_foss/ pro každou třídu, kterou používáte (Workbook.h, Worksheet.h, Cell.h, Style.h, Font.h, Color.h, CellArea.h), a poté otevřete jmenný prostor Aspose::Cells_FOSS:
using namespace Aspose::Cells_FOSS;Krok 3: Vytvořte sešit a pojmenujte list
Instanciujte Workbook, získejte první list pomocí GetWorksheets()[0] a nastavte jeho zobrazovaný název:
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.SetName("Sales");
return 0;
}Krok 4: Přidejte hodnoty buněk
Zavolejte GetCells()["A1"].PutValue() pro zápis textových řetězců, číselných hodnot a logických hodnot do jednotlivých buněk podle adresy:
sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Widget");
sheet.GetCells()["B2"].PutValue(9.99);
sheet.GetCells()["A3"].PutValue("Gadget");
sheet.GetCells()["B3"].PutValue(24.99);Krok 5: Nastavte vzorec
Zavolejte SetFormula() na buňku pro uložení řetězce vzorce kompatibilního s Excelem; vzorec je vyhodnocen v Excelu při otevření souboru:
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");Krok 6: Použijte stylování buněk
Získejte styl pomocí Cell::GetStyle(), upravte jej a aplikujte pomocí Cell::SetStyle(style):
Style headerStyle = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
headerStyle.SetFont(font);
headerStyle.SetPattern(FillPattern::Solid);
headerStyle.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
sheet.GetCells()["A1"].SetStyle(headerStyle);
sheet.GetCells()["B1"].SetStyle(headerStyle);Krok 7: Sloučit buňky
Použijte Cells::Merge ke sloučení rozsahu do jedné buňky:
CellArea titleArea = CellArea::CreateCellArea("A1", "B1");
sheet.GetCells().Merge(0, 0, 1, 2);Krok 8: Uložit sešit
Zavolejte workbook.Save() s názvem souboru pro zápis tabulky jako souboru XLSX, poté zavolejte Dispose() pro uvolnění prostředků:
workbook.Save("sales.xlsx");
workbook.Dispose();Časté problémy a opravy
Styl se po uložení nepoužije Vždy zavolejte Cell::SetStyle(style) po úpravě objektu stylu. Přímá úprava vráceného stylu se neprojeví; musíte jej explicitně nastavit zpět.
Vzorec uložen jako řetězcový literál Použijte SetFormula("=SUM(...)") not PutValue("=SUM(...)"). PutValue považuje argument za řetězcový literál, ne za vzorec.
Sloučená buňka se nezobrazuje správně Zajistěte, aby parametry sloučení (row, column, rowCount, columnCount) správně pokrývaly zamýšlený rozsah. Překrývající se sloučení nejsou podporována.
Sešit nemá po konstrukci žádné listy Výchozí list je vždy vytvořen Workbook(). Zavolejte GetWorksheets()[0] pro přístup k němu.
Dispose nebyl zavolán Vždy zavolejte workbook.Dispose() pro uvolnění prostředků, zejména v dlouhodobě běžících aplikacích.
Často kladené otázky
Mohu přidat více listů do jednoho sešitu?
Ano. Použijte Workbook::GetWorksheets() pro přístup ke kolekci a přidávejte listy programově. Zajistěte, aby každý list měl jedinečný název pomocí Workbook::EnsureUniqueSheetName().
Jak nastavit číselný formát pro buňku?
Použijte Style::SetNumberFormat(format) před voláním Cell::SetStyle(style). Formátovací řetězce odpovídají standardní syntaxi číselných formátů v Excelu.
Mohu použít stejný styl na více buněk?
Ano. Získáte styl jednou, upravíte jej a poté zavoláte SetStyle(style) na každou cílovou buňku.
Vyhodnocuje se vzorec při uložení?
Ne. Vyhodnocení vzorce probíhá v Excelu nebo kompatibilním čtečce při otevření souboru. Knihovna zapíše řetězec vzorce do buňky.
Kolik řádků a sloupců může list obsahovat?
Každý list obsahuje data v celé své mřížce řádků a sloupců dle standardních rozměrů tabulky.