Hur man skapar och fyller i en kalkylbladsdatamodell i C++

Hur man skapar och fyller i en kalkylbladsdatamodell i C++

Denna guide visar hur man skapar en arbetsbok, fyller celler med värden och formler, applicerar stilar och sparar som en kalkylbladsfil med hjälp av Aspose.Cells FOSS för C++-biblioteket. De centrala klasserna som används är Workbook, Worksheet, Cell och Style.

Steg-för-steg-guide

Steg 1: Ställ in bygget

Lägg till Cells FOSS-biblioteket i ditt CMake-projekt och länka Aspose.Cells.Foss.Cpp-målet:

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)

Steg 2: Inkludera rubriker och sätt namnrymd

Inkludera per-klass rubrikerna från aspose/cells_foss/ för varje klass du använder (Workbook.h, Worksheet.h, Cell.h, Style.h, Font.h, Color.h, CellArea.h), öppna sedan Aspose::Cells_FOSS-namnrymden:

using namespace Aspose::Cells_FOSS;

Steg 3: Skapa en arbetsbok och namnge bladet

Instansiera Workbook, hämta det första arbetsbladet via GetWorksheets()[0], och sätt dess visningsnamn:

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    sheet.SetName("Sales");
    return 0;
}

Steg 4: Lägg till cellvärden

Anropa GetCells()["A1"].PutValue() för att skriva textsträngar, numeriska värden och booleska värden i enskilda celler efter adress:

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);

Steg 5: Ange en formel

Anropa SetFormula() på en cell för att lagra en Excel-kompatibel formelsträng; formeln utvärderas av Excel när filen öppnas:

sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");

Steg 6: Tillämpa cellformatering

Hämta stilen med Cell::GetStyle(), modifiera den och tillämpa med 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);

Steg 7: Slå ihop celler

Använd Cells::Merge för att kombinera ett område till en enda cell:

CellArea titleArea = CellArea::CreateCellArea("A1", "B1");
sheet.GetCells().Merge(0, 0, 1, 2);

Steg 8: Spara arbetsboken

Anropa workbook.Save() med ett filnamn för att skriva kalkylbladet som en XLSX-fil, anropa sedan Dispose() för att frigöra resurser:

workbook.Save("sales.xlsx");
workbook.Dispose();

Vanliga problem och lösningar

Stilen tillämpas inte efter sparning Anropa alltid Cell::SetStyle(style) efter att du har ändrat stilobjektet. Att ändra den returnerade stilen direkt tillämpas inte; du måste uttryckligen sätta tillbaka den.

Formel lagrad som strängliteral Använd SetFormula("=SUM(...)") not PutValue("=SUM(...)"). PutValue behandlar argumentet som en bokstavlig sträng, inte en formel.

Sammanslagen cell renderas inte korrekt Se till att sammanslagningsparametrarna (row, column, rowCount, columnCount) korrekt täcker det avsedda intervallet. Överlappande sammanslagningar stöds inte.

Workbook har inga ark efter konstruktion Ett standardark skapas alltid av Workbook(). Anropa GetWorksheets()[0] för att komma åt den.

Dispose har inte anropats Anropa alltid workbook.Dispose() för att frigöra resurser, särskilt i långvariga applikationer.

Vanliga frågor

Kan jag lägga till flera kalkylblad i en arbetsbok?

Ja. Använd Workbook::GetWorksheets() för att komma åt samlingen och lägga till blad programatiskt. Se till att varje blad har ett unikt namn med Workbook::EnsureUniqueSheetName().

Hur ställer jag in ett talformat för en cell?

Använd Style::SetNumberFormat(format) innan du anropar Cell::SetStyle(style). Formatsträngar följer standard Excel-talformatssyntax.

Kan jag tillämpa samma stil på flera celler?

Ja. Hämta stilen en gång, ändra den och anropa sedan SetStyle(style) på varje målcell.

Utvärderas formeln när den sparas?

Nej. Formelvevärderingen sker i Excel eller en kompatibel läsare när filen öppnas. Biblioteket skriver formelsträngen till cellen.

Hur många rader och kolumner kan ett kalkylblad innehålla?

Varje kalkylblad lagrar data över hela sitt rutnät av rader och kolumner, enligt standarddimensioner för kalkylblad.

Se även

 Svenska