Como carregar uma planilha no .NET
Aspose.Cells FOSS for .NET lets you open existing XLSX spreadsheets with a single constructor call and provides a fault-tolerant loading path for files that have minor structural corruption. Install the library from NuGet with dotnet add package Aspose.Cells_FOSS.
Guia passo a passo
Passo 1: Instalar o pacote
dotnet add package Aspose.Cells_FOSSVerificar a presença da embalagem:
dotnet list package | grep Aspose.Cells_FOSSPasso 2: Importar o espaço de nomes
Adicione esta directiva no topo do seu arquivo C#:
using Aspose.Cells_FOSS;Passo 3: Carregar um arquivo XLSX
Passe o caminho do ficheiro para a página de acesso . Workbook A biblioteca lê o arquivo XLSX e preenche o objeto do livro de trabalho na memória.
using Aspose.Cells_FOSS;
var wb = new Workbook("data.xlsx");
Console.WriteLine("Loaded " + wb.Worksheets.Count + " sheet(s)");
Console.WriteLine("First sheet: " + wb.Worksheets[0].Name);
Console.WriteLine("A1 value: " + wb.Worksheets[0].Cells["A1"].StringValue);Passo 4: Carregar com opções de reparação tolerantes a falhas
Para arquivos que possam ter corrupção ZIP ou XML, fornecer um LoadOptions objeto com TryRepairPackage e a) TryRepairXml definido em: true.- Envolve a chamada num “A” . try/catch para o WorkbookLoadException No caso de o ficheiro não ser recuperável.
using Aspose.Cells_FOSS;
var opts = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
var wb = new Workbook("possibly-corrupt.xlsx", opts);
Console.WriteLine("Loaded successfully");
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Unrecoverable file: " + ex.Message);
}Passo 5: Verificar o diagnóstico de carga
Após a carga, inspeccionar o sistema de controlo. Workbook.LoadDiagnostics Para ver se a biblioteca aplicou reparos. HasRepairs é: true Se tiver sido aplicado qualquer reparação; HasDataLossRisk é: true se os dados podem ter sido descartados. Issues para aceder a cada um dos DiagnosticEntry registros.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
{
Console.WriteLine("Repairs were applied. Data loss risk: " + diag.HasDataLossRisk);
foreach (var entry in diag.Issues)
Console.WriteLine($" [{entry.Severity}] {entry.Code}: {entry.Message}");
}
else
{
Console.WriteLine("File loaded cleanly — no repairs.");
}Passo 6: Acesse dados da planilha
Após o carregamento, acessar folhas de trabalho por índice ou nome e ler os valores das células usando Cell.StringValue ou a) Cell.Value.
using Aspose.Cells_FOSS;
var wb = new Workbook("data.xlsx");
// By index
var sheet = wb.Worksheets[0];
Console.WriteLine("Sheet: " + sheet.Name);
Console.WriteLine("A1: " + sheet.Cells["A1"].StringValue);
// By name
var named = wb.Worksheets["Report"];
if (named != null)
Console.WriteLine("Report!B2: " + named.Cells["B2"].StringValue);Problemas comuns e soluções
WorkbookLoadException é lançado mesmo com as opções de reparação ativadas. Isso significa que a estrutura ZIP do arquivo está muito danificada para os algoritmos de reparação recuperarem. Verifique se o arquivos é um arquipélago Zip válido (por exemplo, tente unzip -t file.xlsxSe o ficheiro estiver completamente corrompido, não poderá ser aberto por nenhuma biblioteca.
A pasta de trabalho carregada tem menos folhas do que o esperado. Uma operação de reparo pode ter deixado cair folhas de trabalho que referenciaram peças faltantes. Verifique LoadDiagnostics.Issues para as entradas com: DataLossRisk = true e notificar o utilizador.
Valores de célula vazios após carga. Certifique-se de que está acessando o índice ou nome da folha de trabalho correto. Use wb.Worksheets.Count Verifique também se o ficheiro XLSX não está protegido por senha (os ficheiros protegidos por palavra-passe não são suportados).
Workbook O constructor está pendurado num arquivo grande. O constructor é sincrônico e carrega o arquivo inteiro na memória. Para arquivos muito grandes, execute a carga em um thread de fundo para manter a interface do usuário responsiva.
DiagnosticEntry.Severity espectáculos Error Mas … HasRepairs é: false. HasRepairs Refere se uma reparação foi aplicada com êxito, não se foram detectados erros. Error- entrada de gravidade com RepairApplied = false significa que o problema foi detectado mas não pôde ser corrigido tratar como um possível aviso de integridade dos dados.
Perguntas Frequentes
Posso carregar um arquivo XLSX a partir de uma corrente em vez de um caminho do arquivos?
Sim, o… Workbook constructor tem sobrecargas que aceitam um Stream Passe o seu fluxo ao longo de um LoadOptions caso seja necessário um carregamento tolerante a falhas.
A biblioteca suporta o carregamento de arquivos XLSX protegidos por senha?
Os arquivos protegidos por senha não estão na superfície da API atual. Tentando carregar um resultará em uma WorkbookLoadException.
Como posso verificar qual folha está ativa na pasta de trabalho carregada?
Leia. Workbook.Worksheets.ActiveSheetName para obter o nome da folha que foi ativado pela última vez quando o arquivo foi salvo.
Posso carregar vários arquivos XLSX simultaneamente?
Sim, cada um. Workbook instância é independente. Você pode instanciar múltiplos Workbook Objetos em threads separados sem estado compartilhado.
O que acontece se uma célula de fórmula for carregada e o resultado armazenado na cache estiver ausente?
Cell.StringValue retorna uma sequência vazia. Cell.Formula O valor armazenado em cache é preenchido apenas quando o Excel (ou um aplicativo compatível) abre e salva o arquivo.