Jak převést Excel grafy a listy na PNG obrázky

Jak převést Excel grafy a listy na PNG obrázky

Tento článek ukazuje, jak konvertovat grafy Excelu a pracovní desky na PNG obrazy pomocí aplikace Aspose.Cells LowCode ImageConverter v aplikacích .NET. ImageKonvertor poskytuje zjednodušený přístup k exportu vizuálních prvků programu Excel jako vysoce kvalitních obrazů, aniž by vyžadovaly rozsáhlé kódování nebo hluboké znalosti vnitřních struktur Excel.

Reálný světový problém

Zpráva návrháři a obchodní analytici často potřebují začlenit vizualizace založené na Excelu do prezentací, dokumentů a webových aplikací. ručně snímání obrazovky nebo pomocí složitých knihoven manipulace s obrázky vede k neslučitelné kvality, ztracené formátování a významného rozvoje.

Řešení přehled

Pomocí aplikace Aspose.Cells LowCode ImageConverter můžeme tuto výzvu efektivně řešit s minimálním kódem. Toto řešení je ideální pro návrháře zpráv a obchodní analytiky, kteří potřebují programově vytvářet vysoce kvalitní vizuální aktivy z dat Excelu při zachování formátování a vizuality.

Předpoklady

Před provedením řešení se ujistěte, že máte:

  • Visual Studio 2019 nebo novější
  • • .NET 6.0 nebo novější (kompatibilní s .Net Framework 4.6.2+)
  • Aspose.Cells pro balíček .NET nainstalovaný prostřednictvím NuGet
  • Základní znalosti C# programování

PM> Install-Package Aspose.Cells

krok za krokem implementace

Krok 1: Instalace a nastavení Aspose.Cells

Přidejte do vašeho projektu balíček Aspose.Cells a zahrněte potřebné názevové prostory:

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

Krok 2: Připravte své vstupní údaje

Identifikujte soubor Excel obsahující grafy nebo tabulky, které chcete převést na obrázky PNG. Ujistěte se, že soubory existují a jsou přístupné z vaší aplikace:

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

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

Krok 3: Nastavení možnosti ImageConverter

Nastavení možností pro proces ImageConverter podle vašich požadavků:

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

Krok 4: Proveďte proces ImageConverter

Proveďte operaci ImageConverter s konfigurovanými možnostmi:

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

Krok 5: Sledujte výstup

Zpracujte a použijte generované PNG obrázky podle potřeby pro vaši aplikaci:

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

Krok 6: Řešení chyb

Přidejte správnou manipulaci s chybami, abyste zajistili robustní provoz:

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
}

Krok 7: Optimalizace výkonu

Zvažte tyto techniky optimalizace pro výrobní prostředí:

  • Použijte paměťové toky pro zpracování vysokého objemu, abyste se vyhnuli přehřátí souborů I/O
  • Provádění paralelního zpracování pro více grafů nebo pracovních desek
  • Přizpůsobte nastavení kvality obrazu pro odpovídající rovnováhu mezi kvalitou a velikostí souboru
// 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);
}

Krok 8: Kompletní příklad provádění

Zde je kompletní pracovní příklad, který ukazuje celý proces:

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

Použití případů a aplikací

Enterprise Reporting Systémy

Finanční analytici mohou automaticky generovat vizuální aktivy z Excelových zpráv pro začlenění do výkonných prezentací nebo tabulek. To eliminuje ruční snímky obrazovky a zajišťuje konzistentní, vysoce kvalitní vizualizace, které přesně reprezentují zdrojové údaje.

Pracovní toky integrace dat

Integrační pracovní toky mohou automaticky převést grafy založené na Excelu do obrazových formátů pro začlenění do zpráv PDF, webových portálů nebo e-mailových oznámení.

Automatizované zpracování dokumentů

Systémy pro generování dokumentů mohou programově extrahovat grafy a vizualizace z pracovních knih Excelu, aby vytvořily profesionální zprávy, které kombinují data, text i vizuální prvky.

Společné výzvy a řešení

Výzva 1: Udržování vysoké kvality obrazu

Rozhodnutí: Konfigurujte ImageOrPrintOptions s odpovídajícími nastavením kvality a rozlišovacími parametry, abyste zajistili optimální výkon. Pro prezentace a tiskové materiály použijte nastavení jakosti 90 nebo vyšší a uvažte o úpravách DPI na základě zamýšleného použití.

Výzva 2: Řešení velkých pracovních desek

Rozhodnutí: Použijte vlastnosti ImageOrPrintOptions.PageIndex a PageCount, abyste zpracovávali určité části velkých desek.Pro velmi velké desky, zvážíte používání nálepkových technik tím, že konfigurujete přizpůsobené nastavení stránek v souboru Excel.

Výzva č. 3: Nepřetržitý pohyb kolem prostředí

Rozhodnutí: Ujistěte se, že fonty používané v Excelovém souboru jsou k dispozici na serveru, nebo použijte nastavení výměny fontů v Aspose.Cells.

Úvahy o výkonu

  • Použijte paměťové toky namísto souboru I/O při konverzi několika snímků v batchovém procesu
  • Pro víceúčelové prostředí, zavedení vhodných blokovacích mechanismů při přístupu k sdíleným zdrojům
  • Zvažte velikost a složitost listů při nastavení možností kvality – vyšší složenost vyžaduje více zdrojů zpracování

Nejlepší postupy

  • Zavádění cachingových mechanismů pro často přístupné grafy, aby se zabránilo opakovaným konverzi
  • Vytvořte systematickou pojmenovací konvenci pro výstupní soubory pro sledování zdroje každého obrazu
  • Vložte metadata do katalogu výstupu obrazu, abyste mohli sledovat zpět do zdrojových souborů Excelu
  • Validujte vstupní soubory Excel před zpracováním, abyste zajistili, že obsahují očekávané grafy a údaje
  • Provádění logování pro sledování úspěšných konverzí a jakýchkoliv problémů, které vznikají během zpracování

Pokročilé scénáře

Pro složitější požadavky, zvážit tyto pokročilé implementace:

Scénář 1: Odstraňování pouze specifických grafů z pracovního listu

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

Scénář 2: Vytvoření Multi-Chart Dashboard Image

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

závěr

Implementací aplikace Aspose.Cells LowCode ImageConverter můžete efektivně převést grafy a pracovní desky Excelu na kvalitní PNG obrázky a zjednodušit tvorbu vizuálních aktiv pro zpráv a prezentace. Tento přístup výrazně snižuje vývojový čas a manuální úsilí při zachování vizuální věrnosti a konzistence formátování.

Pro další informace a další příklady se podívejte na Aspose.Cells.LowCode API Reference .

 Čeština