Como converter gráficos e folhas do Excel em imagens PNG
Este artigo demonstra como converter gráficos e folhetos de trabalho do Excel para imagens PNG usando o Aspose.Cells LowCode ImageConverter em aplicações .NET. Image Converters fornece uma abordagem simplificada para exportar os elementos visuais de Excel como imagens de alta qualidade sem exigir codificação extensa ou conhecimento profundo das estruturas internas do Excel.
Problemas do mundo real
Os designers de relatórios e analistas de negócios muitas vezes precisam incorporar visualizações baseadas no Excel em apresentações, documentos e aplicações da web. Manual tomando capturas de tela ou usando bibliotecas de manipulação de imagens complexas resultam em qualidade inconsistente, formatação perdida e desenvolvimento significativo.
Solução Overview
Usando Aspose.Cells LowCode ImageConverter, podemos resolver este desafio de forma eficiente com código mínimo. Esta solução é ideal para designers de relatórios e analistas de negócios que precisam gerar programadamente ativos visuais de alta qualidade dos dados do Excel, ao mesmo tempo que preservam a formatação e fidelidade visual.
Pré-requisitos
Antes de implementar a solução, certifique-se de ter:
- Visual Studio 2019 ou posterior
- .NET 6.0 ou posterior (compatível com .Net Framework 4.6.2+)
- Aspose.Cells para o pacote .NET instalado através de NuGet
- Compreensão básica da programação C#
PM> Install-Package Aspose.Cells
Implementação passo a passo
Passo 1: Instale e Configure Aspose.Cells
Adicione o pacote Aspose.Cells ao seu projeto e inclua os espaços de nomes necessários:
using Aspose.Cells;
using Aspose.Cells.LowCode;
using Aspose.Cells.Rendering;
using System.IO;
Passo 2: Prepare seus dados de entrada
Identifique o arquivo do Excel que contém os gráficos ou folhetos de trabalho que você deseja converter para imagens PNG. Assegure-se de que o ficheiro existe e está acessível a partir da sua aplicação:
// Define the path to your Excel file
string excelFilePath = "reports/quarterly_sales.xlsx";
// Ensure the directory for output exists
Directory.CreateDirectory("result");
Passo 3: Configure as opções de ImageConverter
Configure as opções para o processo ImageConverter de acordo com suas necessidades:
// Basic usage - convert the entire workbook
ImageConverter.Process(excelFilePath, "result/BasicOutput.png");
// Advanced configuration
LowCodeLoadOptions loadOptions = new LowCodeLoadOptions();
loadOptions.InputFile = excelFilePath;
LowCodeImageSaveOptions saveOptions = new LowCodeImageSaveOptions();
ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
imageOptions.Quality = 100; // Set the quality of the output image
imageOptions.OnePagePerSheet = true; // Each sheet on a separate image
saveOptions.ImageOptions = imageOptions;
Passo 4: Execute o processo ImageConverter
Execute a operação ImageConverter com as opções configuradas:
// Basic execution
ImageConverter.Process(loadOptions, saveOptions);
// Advanced execution with custom file naming
LowCodeSaveOptionsProviderOfPlaceHolders fileNameProvider = new LowCodeSaveOptionsProviderOfPlaceHolders(
"result/Chart${SheetIndexPrefix}${SheetIndex}_${SplitPartIndex}.png");
fileNameProvider.SheetIndexOffset = 1;
fileNameProvider.SheetIndexPrefix = "S";
fileNameProvider.SplitPartIndexOffset = 1;
ImageConverter.Process(loadOptions, saveOptions, fileNameProvider);
Passo 5: Gerencie a saída
Processar e utilizar as imagens PNG geradas conforme necessário para a sua aplicação:
// Verify the output files exist
if (File.Exists("result/ChartS1_1.png"))
{
Console.WriteLine("Chart image successfully created!");
// Implement your logic to use the image files
// For example: Copy to a web server directory
// File.Copy("result/ChartS1_1.png", "wwwroot/images/chart1.png");
}
Passo 6: Implementação de erros de gestão
Adicione o tratamento de erros adequado para garantir uma operação robusta:
try
{
// Configure load options
LowCodeLoadOptions loadOptions = new LowCodeLoadOptions();
loadOptions.InputFile = excelFilePath;
// Configure save options
LowCodeImageSaveOptions saveOptions = new LowCodeImageSaveOptions();
ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
saveOptions.ImageOptions = imageOptions;
// Execute conversion
ImageConverter.Process(loadOptions, saveOptions);
Console.WriteLine("Conversion completed successfully.");
}
catch (Exception ex)
{
// Error handling and logging
Console.WriteLine($"Error during conversion: {ex.Message}");
// Log the error to your logging system
// Consider implementing retry logic for transient issues
}
Passo 7: Otimizar o desempenho
Considere estas técnicas de otimização para ambientes de produção:
- Use fluxos de memória para processamento de alto volume para evitar o excesso de arquivo I/O
- Implementação de processamento paralelo para múltiplos gráficos ou folhas de trabalho
- Ajuste as configurações de qualidade da imagem para o equilíbrio adequado entre qualidade e tamanho de arquivo
// Using memory streams for programmatic use without file I/O
using (MemoryStream outputStream = new MemoryStream())
{
LowCodeLoadOptions loadOptions = new LowCodeLoadOptions();
loadOptions.InputFile = excelFilePath;
LowCodeImageSaveOptions saveOptions = new LowCodeImageSaveOptions();
ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
// For web use, might want lower quality/size
imageOptions.Quality = 85;
saveOptions.ImageOptions = imageOptions;
saveOptions.OutputStream = outputStream;
ImageConverter.Process(loadOptions, saveOptions);
// Use the stream directly (e.g., with web responses)
byte[] imageBytes = outputStream.ToArray();
// Example: save to file from memory stream
File.WriteAllBytes("result/OptimizedChart.png", imageBytes);
}
Passo 8: Exemplo completo de implementação
Aqui está um exemplo de trabalho completo que demonstra todo o processo:
using System;
using System.IO;
using Aspose.Cells;
using Aspose.Cells.LowCode;
using Aspose.Cells.Rendering;
namespace ExcelChartToPngConverter
{
class Program
{
static void Main(string[] args)
{
try
{
// Set up directories
Directory.CreateDirectory("result");
// Define source Excel file
string excelFilePath = "quarterly_sales.xlsx";
Console.WriteLine("Starting Excel chart conversion...");
// Basic conversion - entire workbook
ImageConverter.Process(excelFilePath, "result/FullWorkbook.png");
// Advanced conversion with options
LowCodeLoadOptions loadOptions = new LowCodeLoadOptions();
loadOptions.InputFile = excelFilePath;
LowCodeImageSaveOptions saveOptions = new LowCodeImageSaveOptions();
ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
imageOptions.Quality = 100;
imageOptions.OnePagePerSheet = true;
saveOptions.ImageOptions = imageOptions;
// Custom file naming pattern for multi-sheet output
LowCodeSaveOptionsProviderOfPlaceHolders fileNameProvider =
new LowCodeSaveOptionsProviderOfPlaceHolders(
"result/Report${SheetIndexPrefix}${SheetIndex}_${SplitPartIndex}.png");
fileNameProvider.SheetIndexOffset = 1;
fileNameProvider.SheetIndexPrefix = "S";
fileNameProvider.SplitPartIndexOffset = 1;
// Execute conversion with custom naming
ImageConverter.Process(loadOptions, saveOptions, fileNameProvider);
// For specific sheet only conversion
saveOptions = new LowCodeImageSaveOptions();
imageOptions = new ImageOrPrintOptions();
imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
imageOptions.PageIndex = 0; // First sheet only
saveOptions.ImageOptions = imageOptions;
saveOptions.OutputFile = "result/FirstSheetOnly.png";
ImageConverter.Process(loadOptions, saveOptions);
Console.WriteLine("Conversion completed successfully!");
Console.WriteLine("Output files located in 'result' directory.");
}
catch (Exception ex)
{
Console.WriteLine($"Error occurred: {ex.Message}");
Console.WriteLine(ex.StackTrace);
}
}
}
}
Use Casos e Aplicações
Sistemas de Relatório Empresarial
Os analistas financeiros podem automaticamente gerar ativos visuais de relatórios do Excel para inclusão em apresentações executivas ou painéis. isto elimina a captura manual e garante visualizações consistentes e de alta qualidade que representam com precisão os dados de origem.
Fluxos de trabalho de integração de dados
Os fluxos de trabalho de integração podem automaticamente converter gráficos baseados no Excel em formatos de imagem para a inclusão em relatórios PDF, portais da web ou notificações de e-mail. Esta automação reduz o esforço manual necessário para transformar visualização de dados em formato consumível.
Processamento automático de documentos
Os sistemas de geração de documentos podem extrair de forma programática gráficos e visualizações dos livros de trabalho do Excel para criar relatórios profissionais que combinam dados, texto e elementos visuais.
Desafios comuns e soluções
Título 1: Manter a qualidade da imagem
Solução: Configure as Opções ImageOrPrint com as configurações de qualidade e os parâmetros de resolução apropriados para garantir o desempenho óptimo.Para apresentações e materiais impressos, use as definições da qualidade de 90 ou mais e considere ajustar a definição de DPI com base no uso pretendido.
Título 2: Manutenção de grandes folhas de trabalho
Solução: Use as propriedades ImageOrPrintOptions.PageIndex e PageCount para processar porções específicas de grandes folhas de trabalho.Para folhetas muito grandes, considere a utilização de técnicas de teclado ao configurar configurações de página personalizadas no arquivo do Excel.
Desafios 3: Render inconsistente em torno de ambientes
Solução: Assegure-se de que as letras utilizadas no arquivo do Excel estão disponíveis no servidor, ou use configurações de substituição de letras em Aspose.Cells. Teste cuidadosamente em diferentes ambientes de implementação e considere incorporar as fontes necessárias em sua aplicação.
Considerações de desempenho
- Use fluxos de memória em vez de arquivo I/O ao converter múltiplas imagens em um processo de batch
- Para ambientes múltiplos, implementar mecanismos de fechamento adequados ao acessar recursos compartilhados
- Considere o tamanho e a complexidade da folha ao configurar opções de qualidade – maior complexo exige mais recursos de processamento
Melhores Práticas
- Implementação de mecanismos de caching para gráficos frequentemente acessados para evitar conversões repetidas
- Crie uma convenção de nomeamento sistemática para os arquivos de saída para rastrear a fonte de cada imagem
- Incluir metadados no directorio de saída da imagem para manter a rastreabilidade de volta aos arquivos do Excel fonte
- Validar os arquivos de entrada do Excel antes do processamento para garantir que contêm os gráficos e dados esperados
- Implementação de logging para rastrear conversões bem sucedidas e quaisquer problemas que surgem durante o processamento
Os cenários avançados
Para requisitos mais complexos, considere estas implementações avançadas:
Cenário 1: extrair apenas gráficos específicos de uma folha de trabalho
using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Drawing;
using System.IO;
// Load the workbook
Workbook workbook = new Workbook("reports/charts.xlsx");
// Get the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Process each chart in the worksheet
for (int i = 0; i < worksheet.Charts.Count; i++)
{
Chart chart = worksheet.Charts[i];
// Save only specific charts based on title or other properties
if (chart.Title.Text.Contains("Revenue"))
{
// Create image for this specific chart
chart.ToImage("result/revenue_chart_" + i + ".png", new ImageOrPrintOptions
{
ImageType = ImageType.Png,
HorizontalResolution = 300,
VerticalResolution = 300
});
}
}
Scenário 2: Criar uma imagem de Dashboard multi-chart
using Aspose.Cells;
using Aspose.Cells.Drawing;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
// Load the workbook containing charts
Workbook workbook = new Workbook("reports/dashboard_data.xlsx");
// Create a bitmap to serve as the dashboard canvas
using (Bitmap dashboardImage = new Bitmap(1200, 800))
{
using (Graphics g = Graphics.FromImage(dashboardImage))
{
// Set white background
g.Clear(Color.White);
// Draw title
using (Font titleFont = new Font("Arial", 18, FontStyle.Bold))
{
g.DrawString("Q2 2025 Performance Dashboard", titleFont,
Brushes.DarkBlue, new PointF(400, 30));
}
// Extract and place charts
int yPosition = 100;
for (int sheetIndex = 0; sheetIndex < 3; sheetIndex++)
{
// Get specific worksheet with chart
Worksheet sheet = workbook.Worksheets[sheetIndex];
if (sheet.Charts.Count > 0)
{
// Convert chart to image
MemoryStream chartStream = new MemoryStream();
sheet.Charts[0].ToImage(chartStream, new ImageOrPrintOptions
{
ImageType = ImageType.Png,
HorizontalResolution = 150,
VerticalResolution = 150
});
// Load chart image
using (Bitmap chartImage = new Bitmap(chartStream))
{
// Position chart on dashboard
g.DrawImage(chartImage, new Rectangle(50, yPosition, 500, 300));
yPosition += 320;
}
}
}
// Save the composite dashboard image
dashboardImage.Save("result/complete_dashboard.png", ImageFormat.Png);
}
}
Conclusão
Ao implementar Aspose.Cells LowCode ImageConverter, você pode efetivamente converter gráficos e folhas de trabalho do Excel em imagens PNG de alta qualidade e simplificar a criação de ativos visuais para relatórios e apresentações.
Para mais informações e exemplos adicionais, consulte Aspose.Cells.LowCode API Referência .