Com convertir gràfics i fulles d'Excel en imatges PNG

Com convertir gràfics i fulles d'Excel en imatges PNG

Aquest article demostra com convertir els gràfics d’Excel i les taules de treball en imatges PNG utilitzant l’Aspose.Cells LowCode ImageConverter en aplicacions .NET. Image Convertor proporciona una aproximació estricta per exportar els elements visuals de Excel com a imatges de gran qualitat sense requerir codificació àmplia o coneixement profund de les estructures internes d’Excell.

El problema del món real

Els dissenyadors d’informes i els analistes de negocis sovint necessiten incorporar visualitzacions basades en Excel en presentacions, documents i aplicacions web. Manualment prendre captures de pantalla o utilitzar biblioteques de manipulació de imatges complexes resulten en qualitat inconsistent, la formatació perduda i el desenvolupament significatiu.

Revisió de solucions

Utilitzant Aspose.Cells LowCode ImageConverter, podem resoldre aquest repte de manera eficient amb codi mínim. Aquesta solució és ideal per als dissenyadors d’informes i analistes de negocis que necessiten generar programàticament els actius visuals de gran qualitat de les dades de Excel, mantenint el format i la fidelitat visual.

Prerequisits

Abans d’implementar la solució, assegureu-vos que teniu:

  • Visual Studio 2019 o posterior
  • .NET 6.0 o posterior (compatible amb el .Net Framework 4.6.2+)
  • Aspose.Cells per al paquet .NET instal·lat a través de NuGet
  • Coneixement bàsic de la programació C#

PM> Install-Package Aspose.Cells

Implementació de pas a pas

Pas 1: Instal·la i configura Aspose.Cells

Afegeix el paquet Aspose.Cells al teu projecte i inclou els espais de nom necessaris:

using Aspose.Cells;
using Aspose.Cells.LowCode;
using Aspose.Cells.Rendering;
using System.IO;

Pas 2: Prepara les teves dades d’entrada

Identifiqueu el fitxer d’Excel que conté els gràfics o les taules de treball que voleu convertir en imatges PNG. Assegureu-vos que l’arxiu existeix i és accessible des de la vostra aplicació:

// Define the path to your Excel file
string excelFilePath = "reports/quarterly_sales.xlsx";

// Ensure the directory for output exists
Directory.CreateDirectory("result");

Pas 3: Configureu les opcions de ImageConverter

Configura les opcions per al procés ImageConverter segons les teves necessitats:

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

Pas 4: Executeu el procés ImageConverter

Executar l’operació ImageConverter amb les opcions configurades:

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

Pas 5: Gestió de la sortida

Processar i utilitzar les imatges PNG generades com sigui necessari per a la seva aplicació:

// 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");
}

Pas 6: Implementar el tractament d’errors

Afegir el correcte tractament d’errors per assegurar un funcionament robust:

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
}

Pas 7: Optimitzar el rendiment

Consulteu aquestes tècniques d’optimització per als entorns de producció:

  • Utilitzeu els fluxos de memòria per al processament d’alt volum per evitar la superfície de fitxers I/O
  • Implementació de processament paral·lel per a múltiples gràfics o taules de treball
  • Ajustar les configuracions de qualitat d’imatge per a l’equilibri adequat de la qualitat i la mida del fitxer
// 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);
}

Pas 8: Exemple complet d’implementació

Aquí teniu un exemple de treball complet que demostra tot el procés:

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

Utilitzar casos i aplicacions

Sistemes d’informe empresarial

Els analistes financers poden generar automàticament els actius visuals dels informes d’Excel per a la inclusió en presentacions executives o tauletes. Això elimina la captura de pantalla manual i assegura visualitzacions consistents i de qualitat que representen precisament les dades de font.

Fluxos de treball d’integració de dades

Els fluxos de treball d’integració poden convertir automàticament els gràfics basats en Excel en formats d’imatge per a la inclusió en informes PDF, portals web o notificacions de correu electrònic.

Processament automàtic de documents

Els sistemes de generació de documents poden extraure programàticament gràfics i visualitzacions dels llibres de treball d’Excel per crear informes professionals que combinen dades, text i elements visuals.

Els reptes i les solucions comunes

Títol 1: Millorar la qualitat de la imatge

Solució: Configureu les Opcions ImageOrPrint amb les ajustaments de qualitat i els paràmetres de resolució adequats per assegurar el rendiment òptim.Per a presentacions i materials d’impressió, utilitzeu la qualitat de 90 o superior i considereu ajustar la configuració de DPI basada en l’ús previst.

Títol 2: Gestió de grans tauletes

Solució: Utilitzeu les propietats ImageOrPrintOptions.PageIndex i PageCount per processar parts específiques de tauletes grans.Per a taules molt grans, considereu utilitzar tècniques d’encàrrega configurant les configuracions de pàgina personalitzades en el fitxer Excel.

Challenge 3: Rendering incoherent al voltant de l’entorn

Solució: Assegureu-vos que les fonts utilitzades en el fitxer Excel estiguin disponibles al servidor, o utilitzeu les configuracions de substitució de font en Aspose.Cells.

Consideracions de rendiment

  • Utilitza els fluxos de memòria en lloc del fitxer I/O quan es converteixen múltiples imatges en un procés de batxilla.
  • Per a entorns multi-triats, implementar mecanismes de tancament adequats quan accedeix als recursos compartits
  • Tenir en compte la grandària i la complexitat de les fulles quan s’estableixen les opcions de qualitat: més complexitats requereixen més recursos de processament

Les millors pràctiques

  • Implementació de mecanismes de càstig per a gràfics freqüentment accessos per evitar conversions repetides
  • Establir una convenció de nomenament sistemàtica per als fitxers de sortida per rastrejar la font de cada imatge
  • Incloure metadades en la direcció de sortida d’imatge per mantenir la traçabilitat de tornada als arxius de font Excel
  • Valida els fitxers d’entrada de Excel abans del processament per assegurar-se que contenen els gràfics i dades esperats
  • Implementar el logging per rastrejar conversions reeixides i qualsevol problema que surti durant el processament

Escenaris avançats

Per a requisits més complexos, considereu aquestes implementacions avançades:

Escenari 1: Extreure només diagrams específics d’una taula de treball

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

Escenari 2: Creació d’una imatge 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);
    }
}

Conclusió

Mitjançant la implementació d’Aspose.Cells LowCode ImageConverter, es pot convertir de manera eficaç els gràfics i les taules de treball de Excel en imatges PNG de gran qualitat i simplificar la creació dels actius visuals per a informes i presentacions. Aquest enfocament redueix significativament el temps de desenvolupament i l’esforç manual alhora que manté la fidelitat visual i la consistència del format.

Per a més informació i exemples addicionals, consulteu el Aspose.Cells.LowCode API Referència .

 Català