Trabalhar com a gestão de planilhas
Trabalhar com a gestão de planilhas
A Comissão Workbook class é o objeto raiz para todas as operações de planilha em Aspose.Cells FOSS for .NET. Ele fornece acesso ao sistema de cálculo da plataforma, que pode ser executado por meio do aplicativo .net. WorksheetCollection,Este guia abrange a carga tolerante às falhas, a organização da folha de trabalho, as configurações do layout de impressão e os controles de layouts de linhas/colunas/células.
Carregamento de pastas com opções de reparação
Passe um caminho de arquivo para o Workbook constructor para carregar um arquivo XLSX existente. Fornecer uma LoadOptions objeto com TryRepairPackage e a) TryRepairXml definido em: true Para tentar recuperar arquivos com corrupção estrutural menor. A WorkbookLoadException é jogado quando o ficheiro não pode ser recuperado.
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);
}Adicionar e organizar folhas de trabalho
Workbook.Worksheets retorna um WorksheetCollection.- Ligue. Add(name) para anexar uma nova planilha por nome; o método retorna o índice da nova folha. Acesse as planícies por índices baseados em zero ou pelo nome. WorksheetCollection.ActiveSheetName para controlar qual guia está ativa quando o ficheiro é aberto.
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);Esconde e mostra folhas de trabalho
Set (s) Worksheet.VisibilityType a) para o VisibilityType.Hidden para esconder uma folha sem excluí-la. Folhas ocultas são preservadas no arquivo XLSX e podem ser tornadas visíveis definindo o código de identificação do ficheiro, que é a seguinte: VisibilityType.Visible.A cor da aba é definida através do 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");Configuração de configuração da página
Worksheet.PageSetup expõe todas as propriedades relacionadas com impressão. PageOrientationType para alternar entre retrato e paisagem. PaperSizeType Para selecionar um tamanho de papel. Defina a área de impressão com PrintArea, definir linhas/colunas repetidas com: PrintTitleRows/PrintTitleColumns, e adicionar quebras de página manual com AddHorizontalPageBreak e a) 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);Dimensões de filas e colunas
Acessos Worksheet.Cells.Rows por índice para obter um Row Objeto. Row.Height (em pontos) para controlar a altura da linha. Row.IsHidden a) para o true Para esconder a linha. Worksheet.Cells.Columns por índice para obter um Column Objeto. Column.Width (em unidades de caracteres) e Column.IsHidden.
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);Células em fusão
Chama-me . Worksheet.Cells.Merge(firstRow, firstColumn, totalRows, totalColumns) O valor da célula de cima à esquerda é herdado pela célula fundida. Use Worksheet.Cells.MergedCells para ler todas as regiões fundidas num livro de trabalho carregado.
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);Dicas e melhores práticas
- Utilização:
WorksheetCollection.ActiveSheetNamepara garantir que a guia correta é selecionada quando o ficheiro for aberto no Excel. - Defina margens de página em polegadas (
LeftMarginInch,TopMarginInch) são valores de ponto flutuante, não inteiros. - Escondendo linhas/colunas (
IsHidden = true) preserva os seus dados; a eliminação de uma linha remove permanentemente os dados. - Sempre ligue.
Workbook.Save()uma vez no final de cada operação do lote, em vez de após cada alteração. - Celas de fusão com pouca moderação nas fichas regiões fusionadas impedem que a classificação e o filtro automático funcionem corretamente na área combinada.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
WorkbookLoadException em carga | ZIP ou XML corrupto no XLSX | Set (s) LoadOptions.TryRepairPackage = true e a) TryRepairXml = true |
Add(name) retorna indexo errado | Utilização do nome da folha como índice | Add() retorna um índice int; use esse índices para acessar a nova folha. |
| Alturas de fila não persistentes | Altura definida em 0 ou valor negativo | Utilize um valor duplo positivo, como: 28d |
| Celular combinado mostra valor errado | Valor escrito para uma célula não superior esquerda do intervalo de fusão | Escreva o valor na célula superior esquerda antes de ligar Cells.Merge() |
| Não aparece a quebra de página. | AddHorizontalPageBreak chamou depois de Save() | Configurar pausas de página antes de ligar Save() |
FAQ
Quantas folhas de trabalho eu posso adicionar?
O formato XLSX suporta até 1024 folhas por livro de trabalho. Os limites práticos dependem da memória disponível e do tamanho do arquivo.
Posso copiar uma folha de trabalho entre quadros?
A superfície da API actual não expõe uma CopyTo Carregar ambos os ficheiros e transferir dados célula por célula.
Como reordenar as folhas de trabalho?
Utilização: WorksheetCollection O movimento posicional direto não está na superfície API atual.
Que unidades faz? PageSetup Utilização para margens?
Todas as propriedades de margem (LeftMarginInch, TopMarginInch, etc.) são em polegadas como double valores.
- Sim . Cells.Merge substituir os dados de células existentes?
O valor da célula superior esquerda é preservado; os valores das outras células fundidas são apagados.
Resumo de referência da API
| Classe / Método | Descrição: |
|---|---|
Workbook | Objeto raiz criar, carregar e salvar quadros de trabalho |
Workbook.Worksheets | Retorna o número de dados: WorksheetCollection |
Workbook.Save(path) | Persistir na pasta de trabalho para XLSX |
WorksheetCollection.Add(name) | Anexar uma nova planilha por nome |
WorksheetCollection.ActiveSheetName | Figura ativa no arquivo aberto |
Worksheet.VisibilityType | VisibilityType.Hidden ou a) Visible |
Worksheet.TabColor | Cor da guia (Color) |
Worksheet.PageSetup | Configurações de layout de impressão |
PageSetup.Orientation | PageOrientationType.Landscape ou a) Portrait |
PageSetup.PaperSize | PaperSizeType.PaperA4, etc. |
PageSetup.AddHorizontalPageBreak(row) | Insiração de divisão horizontal da página |
Cells.Rows[index].Height | Alturas de linha em pontos |
Cells.Rows[index].IsHidden | Figura 1 - Lista de dados |
Cells.Columns[index].Width | Largura da coluna em unidades de caracteres |
Cells.Columns[index].IsHidden | Coluna de ocultar/mostrar |
Cells.Merge(row, col, numRows, numCols) | Merger um bloco retangular |
Cells.MergedCells | Lista das regiões incorporadas na ficha |
LoadOptions.TryRepairPackage | Tentativa de reparação ZIP em carga |
LoadOptions.TryRepairXml | Tentativa de reparo XML no carregamento |
WorkbookLoadException | Lançado quando o arquivo não é recuperável |