Werken met Spreadsheetbeheer
Werken met Spreadsheetbeheer
De Workbook klasse is het hoofdobject voor alle spreadsheet-bewerkingen in Aspose.Cells FOSS voor .NET. Het biedt toegang tot de WorksheetCollection, gedefinieerde namen en de opslaan/laden levenscyclus. Deze gids behandelt fouttolerante lading, werkbladorganisatie, configuratie van de afdruklay-out en besturing van rij/kolom/cel-lay-out.
Werkboeken laden met reparatie-opties
Geef een bestandspad door aan de Workbook constructor om een bestaand XLSX-bestand te laden. Lever een LoadOptions object met TryRepairPackage en TryRepairXml ingesteld op true om te proberen bestanden met kleine structurele corruptie te herstellen. Een WorkbookLoadException wordt gegooid wanneer het bestand onherstelbaar is.
using Aspose.Cells_FOSS;
var options = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
var wb = new Workbook("data.xlsx", options);
Console.WriteLine("Sheets: " + wb.Worksheets.Count);
Console.WriteLine("Cell A1: " + wb.Worksheets[0].Cells["A1"].StringValue);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Unrecoverable: " + ex.Message);
}Werkbladen toevoegen en organiseren
Workbook.Worksheets retourneert een WorksheetCollection. Roep Add(name) aan om een nieuw werkblad bij naam toe te voegen; de methode retourneert de index van het nieuwe blad. Toegang tot werkbladen via een nulgebaseerde index of via de naam. Stel WorksheetCollection.ActiveSheetName in om te bepalen welk tabblad actief is wanneer het bestand wordt geopend.
using Aspose.Cells_FOSS;
var wb = new Workbook();
// Rename the default sheet
wb.Worksheets[0].Name = "Summary";
// Add sheets
var dataIdx = wb.Worksheets.Add("Data");
var archiveIdx = wb.Worksheets.Add("Archive");
// Set active sheet
wb.Worksheets.ActiveSheetName = "Data";
// Write to sheets by name
wb.Worksheets["Summary"].Cells["A1"].PutValue("Overview total");
wb.Worksheets["Data"].Cells["A1"].PutValue("Raw rows start here");
wb.Save("organised.xlsx");
// Verify
var loaded = new Workbook("organised.xlsx");
Console.WriteLine("Active: " + loaded.Worksheets.ActiveSheetName);
Console.WriteLine("Sheet count: " + loaded.Worksheets.Count);Werkbladen verbergen en weergeven
Stel Worksheet.VisibilityType in op VisibilityType.Hidden om een blad te verbergen zonder het te verwijderen. Verborgen bladen worden bewaard in het XLSX-bestand en kunnen zichtbaar worden gemaakt door VisibilityType.Visible in te stellen. De tabkleur wordt ingesteld via Worksheet.TabColor.
using Aspose.Cells_FOSS;
var wb = new Workbook();
wb.Worksheets[0].Name = "Visible";
var hiddenIdx = wb.Worksheets.Add("Internal");
var hiddenSheet = wb.Worksheets[hiddenIdx];
hiddenSheet.VisibilityType = VisibilityType.Hidden;
hiddenSheet.Cells["A1"].PutValue("Internal data");
wb.Worksheets["Visible"].TabColor = Color.FromArgb(255, 70, 130, 180);
wb.Save("hidden.xlsx");Pagina-instelling configureren
Worksheet.PageSetup toont alle afdrukgerelateerde eigenschappen. Gebruik PageOrientationType om te schakelen tussen staand en liggend. Gebruik PaperSizeType om een papierformaat te selecteren. Definieer het afdrukgebied met PrintArea, stel herhalende rijen/kolommen in met PrintTitleRows/PrintTitleColumns, en voeg handmatige pagina-einden toe met AddHorizontalPageBreak en AddVerticalPageBreak.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Sample data
for (var r = 0; r < 60; r++)
ws.Cells[r, 0].PutValue("Row " + (r + 1));
var ps = ws.PageSetup;
ps.Orientation = PageOrientationType.Landscape;
ps.PaperSize = PaperSizeType.PaperA4;
ps.LeftMarginInch = 0.5d;
ps.RightMarginInch = 0.5d;
ps.TopMarginInch = 0.75d;
ps.BottomMarginInch = 0.75d;
ps.PrintArea = "$A$1:$H$60";
ps.PrintTitleRows = "$1:$1";
ps.CenterHeader = "Sales Report";
ps.LeftFooter = "Confidential";
ps.RightFooter = "Page &P of &N";
ps.PrintGridlines = true;
ps.CenterHorizontally = true;
ps.AddHorizontalPageBreak(30);
wb.Save("paged.xlsx");
var loaded = new Workbook("paged.xlsx");
Console.WriteLine("Orientation: " + loaded.Worksheets[0].PageSetup.Orientation);
Console.WriteLine("Print area: " + loaded.Worksheets[0].PageSetup.PrintArea);Rij- en kolomgrootte
Verkrijg Worksheet.Cells.Rows via index om een Row object te krijgen. Stel Row.Height (in punten) in om de rijhoogte te regelen. Stel Row.IsHidden in op true om de rij te verbergen. Verkrijg Worksheet.Cells.Columns via index om een Column object te krijgen. Stel Column.Width (in tekeneenheden) en Column.IsHidden in.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Populate data
for (var r = 0; r < 5; r++)
for (var c = 0; c < 4; c++)
ws.Cells[r, c].PutValue($"R{r + 1}C{c + 1}");
// Row height and visibility
ws.Cells.Rows[0].Height = 28d; // Header taller
ws.Cells.Rows[3].IsHidden = true; // Hide row 4
// Column width and visibility
ws.Cells.Columns[0].Width = 22d;
ws.Cells.Columns[3].IsHidden = true;
wb.Save("layout.xlsx");
var loaded = new Workbook("layout.xlsx");
Console.WriteLine("Row 0 height: " + loaded.Worksheets[0].Cells.Rows[0].Height);
Console.WriteLine("Col 0 width: " + loaded.Worksheets[0].Cells.Columns[0].Width);Cellen samenvoegen
Roep Worksheet.Cells.Merge(firstRow, firstColumn, totalRows, totalColumns) aan om een aaneengesloten rechthoekig blok samen te voegen tot één cel. De samengevoegde cel erft de waarde van de cel linksboven. Gebruik Worksheet.Cells.MergedCells om alle samengevoegde gebieden in een geladen werkmap uit te lezen.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Title spanning A1:D1
ws.Cells["A1"].PutValue("Quarterly Sales Report");
ws.Cells.Merge(0, 0, 1, 4);
// Section header spanning A3:D3
ws.Cells["A3"].PutValue("Region: North");
ws.Cells.Merge(2, 0, 1, 4);
// Column headers
ws.Cells["A4"].PutValue("Product"); ws.Cells["B4"].PutValue("Q1");
ws.Cells["C4"].PutValue("Q2"); ws.Cells["D4"].PutValue("Q3");
wb.Save("report.xlsx");
var loaded = new Workbook("report.xlsx");
Console.WriteLine("Merged regions: " + loaded.Worksheets[0].Cells.MergedCells.Count);Tips en best practices
- Gebruik
WorksheetCollection.ActiveSheetNameom ervoor te zorgen dat het juiste tabblad wordt geselecteerd wanneer het bestand in Excel wordt geopend. - Stel paginamarges in inches in (
LeftMarginInch,TopMarginInch) — dit zijn kommagetallen, geen gehele getallen. - Rijen/kolommen verbergen (
IsHidden = true) behoudt hun gegevens; een rij verwijderen verwijdert de gegevens permanent. - Roep
Workbook.Save()altijd één keer aan het einde van een batchbewerking aan in plaats van na elke wijziging. - Voeg cellen spaarzaam samen in gegevensbladen — samengevoegde gebieden voorkomen dat sorteren en autofilter correct werken over het samengevoegde gebied.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
WorkbookLoadException bij het laden | Beschadigde ZIP of XML in de XLSX | Stel LoadOptions.TryRepairPackage = true en TryRepairXml = true in |
Add(name) geeft verkeerde index terug | Sheetnaam gebruiken als index | Add() geeft een int-index terug; gebruik die index om het nieuwe blad te benaderen |
| Rijhoogte niet bewaard | Hoogte ingesteld op 0 of negatieve waarde | Gebruik een positieve double-waarde, zoals 28d |
| Samengevoegde cel toont verkeerde waarde | Waarde geschreven naar een niet-linkerboven-cel van het samenvoegbereik | Schrijf de waarde naar de linkerboven-cel voordat Cells.Merge() wordt aangeroepen |
| Pagina-einde verschijnt niet | AddHorizontalPageBreak aangeroepen na Save() | Stel pagina-einden in vóór het aanroepen van Save() |
FAQ
Hoeveel werkbladen kan ik toevoegen?
Het XLSX-formaat ondersteunt tot 1024 werkbladen per werkmap. Praktische limieten hangen af van het beschikbare geheugen en de bestandsgrootte.
Kan ik een werkblad tussen werkmappen kopiëren?
Het huidige API-oppervlak biedt geen CopyTo-methode voor het kopiëren van werkbladen tussen werkmappen. Laad beide bestanden en draag de gegevens cel voor cel over.
Hoe kan ik werkbladen herschikken?
Gebruik WorksheetCollection indextoegang en hernoem werkbladen om hun logische volgorde te wijzigen. Directe positionele verplaatsing zit niet in het huidige API-oppervlak.
Welke eenheden gebruikt PageSetup voor marges?
Alle marge-eigenschappen (LeftMarginInch, TopMarginInch, enz.) zijn in inches als double-waarden.
Vervangt Cells.Merge bestaande celgegevens?
De waarde van de cel linksboven wordt behouden; waarden in de andere samengevoegde cellen worden gewist.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
Workbook | Rootobject — maak, laad, sla werkboeken op |
Workbook.Worksheets | Retourneert de WorksheetCollection |
Workbook.Save(path) | Werkboek opslaan als XLSX |
WorksheetCollection.Add(name) | Voeg een nieuw werkblad toe op naam |
WorksheetCollection.ActiveSheetName | Actieve tabblad bij bestand openen |
Worksheet.VisibilityType | VisibilityType.Hidden or Visible |
Worksheet.TabColor | Tabkleur (Color) |
Worksheet.PageSetup | Afdruklay-outinstellingen |
PageSetup.Orientation | PageOrientationType.Landscape of Portrait |
PageSetup.PaperSize | PaperSizeType.PaperA4, enz. |
PageSetup.AddHorizontalPageBreak(row) | Horizontale paginawisseling invoegen |
Cells.Rows[index].Height | Rijhoogte in punten |
Cells.Rows[index].IsHidden | Rij verbergen/weergeven |
Cells.Columns[index].Width | Kolombreedte in tekeneenheden |
Cells.Columns[index].IsHidden | Kolom verbergen/weergeven |
Cells.Merge(row, col, numRows, numCols) | Voeg een rechthoekig blok samen |
Cells.MergedCells | Lijst van samengevoegde regio’s in het blad |
LoadOptions.TryRepairPackage | Poging tot ZIP reparatie bij het laden |
LoadOptions.TryRepairXml | Poging tot XML reparatie bij het laden |
WorkbookLoadException | Wordt gegooid wanneer het bestand onherstelbaar is |