У данашњем свету који се бави подацима, визуелизација сложених информација кроз графике и графике постала је од суштинског значаја. док Екцел пружа моћне графичке способности, постоје безброј сценарија где морате извући ове визуелне елементе као појединачне слике:

  • Укључивање графика у извештаје и презентације
  • Уграђивање визуелизација у веб апликације
  • Поделите увид без дистрибуције целог плоча
  • Креирање документације са графичким илустрацијама
  • Креирање динамичног визуелног садржаја за деловне интелигенције

Aspose.Cells za .NET nudi snažno rešenje za programski pretvaranje Excel grafikona u kvalitetne slike bez potrebe za Microsoft Excel instaliranjem.

Зашто изабрати Aspose.Cells за графичку конверзију?

Традиционални приступи за Екцел аутоматизацију могу бити проблематични у производним окружењима због:

  • Bezbednosne ranjivosti
  • сложености распоређивања
  • Izazovi licenciranja
  • перформанси бочица
  • Проблеми стабилности

Aspose.Cells пружа посвећен АПИ специјално дизајниран за обраду Екцел датотека са стране сервера, пружајући врхунску перформансе и поузданост.

Počeo je

Пре него што уђете у примере, уверите се да имате:

  • Преузети и инсталирати Aspose.Cells za .NET
  • Додао је референцу на Aspose.Cells.dll u vašem projektu
  • Увозили су потребне имена простора:
using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Rendering;

Основни график за конверзију слике

Почнимо са једноставним примером конверзије свих графика у радном листу у слике користећи Ц# Екцел График на слику:

// Load the Excel file containing charts
Workbook workbook = new Workbook("SalesReport.xlsx");

// Access the worksheet containing charts
Worksheet sheet = workbook.Worksheets[0];

// Initialize counter for unique filenames
int chartIndex = 1;

// Process each chart in the worksheet
foreach (Chart chart in sheet.Charts)
{
    // Define the output path for the image
    string outputPath = $"Chart_{chartIndex}.png";
    
    // Convert the chart to an image
    chart.ToImage(outputPath, ImageFormat.Png);
    
    Console.WriteLine($"Successfully converted chart {chartIndex} to {outputPath}");
    chartIndex++;
}

Побољшана квалитет слике са прилагођеним опцијама

За професионалне апликације, често ћете морати да контролишете квалитет и изглед извоза слика. ово се може постићи користећи Java Excel Chart to Image технике:

// Load the workbook containing charts
Workbook workbook = new Workbook("FinancialDashboard.xlsx");
Worksheet sheet = workbook.Worksheets["Performance Metrics"];

// Create image options with high resolution
ImageOrPrintOptions imageOptions = new ImageOrPrintOptions
{
    HorizontalResolution = 300,
    VerticalResolution = 300,
    ImageFormat = ImageFormat.Jpeg,
    Quality = 95 // Higher quality JPEG compression
};

// Access a specific chart (e.g., the first chart)
Chart revenueChart = sheet.Charts[0];

// Convert with custom options
revenueChart.ToImage("Revenue_Trends_HQ.jpg", imageOptions);

Конвертирање више графика са различитим форматима

Различити случајеви коришћења могу захтевати различите формати слике. Ево како извозити графике у различите формати:

// Load the Excel workbook
Workbook workbook = new Workbook("QuarterlyReport.xlsx");
Worksheet sheet = workbook.Worksheets["Sales Analysis"];

// Initialize counter for unique filenames
int idx = 0;

// Process each chart with custom options for different formats
foreach (Chart chart in sheet.Charts)
{
    // Create image options
    ImageOrPrintOptions imgOpts = new ImageOrPrintOptions();
    
    // Configure different settings based on chart index
    switch (idx % 3)
    {
        case 0: // PNG format with transparency
            imgOpts.ImageFormat = ImageFormat.Png;
            chart.ToImage($"Chart_{idx}_transparent.png", imgOpts);
            break;
            
        case 1: // JPEG format with high quality
            imgOpts.ImageFormat = ImageFormat.Jpeg;
            imgOpts.Quality = 100;
            chart.ToImage($"Chart_{idx}_high_quality.jpg", imgOpts);
            break;
            
        case 2: // SVG format for vector graphics
            imgOpts.ImageFormat = ImageFormat.Svg;
            chart.ToImage($"Chart_{idx}_vector.svg", imgOpts);
            break;
    }
    
    ++idx;
}

Напредне опције за рендеринг графике

Када вам је потребна прецизна контрола процеса рендера, Aspose.Cells пружа свеобухватне могућности прилагођавања:

// Load the source workbook
Workbook workbook = new Workbook("MarketingAnalytics.xlsx");
Worksheet sheet = workbook.Worksheets["Campaign Performance"];

// Get reference to a specific chart
Chart campaignChart = sheet.Charts[0];

// Create advanced rendering options
ImageOrPrintOptions renderOptions = new ImageOrPrintOptions
{
    // Set high resolution for print-quality output
    HorizontalResolution = 600,
    VerticalResolution = 600,
    
    // Control image appearance
    ImageFormat = ImageFormat.Png,
    OnlyArea = false, // Include the entire chart area
    
    // Set custom dimensions (if needed)
    CustomPrintPageWidth = 800,
    CustomPrintPageHeight = 600,
    
    // Enable text rendering hints for smoother text
    TextRenderingHint = TextRenderingHint.AntiAlias,
    
    // Apply print settings from the workbook
    PrintingPage = PrintingPageType.Default
};

// Convert chart with advanced options
campaignChart.ToImage("Campaign_Performance_Print_Quality.png", renderOptions);

Баццх обраде графике из више радног листа

У корпоративним апликацијама, можда ћете морати да обрађујете графике кроз више радног листа:

// Load the source Excel file
Workbook workbook = new Workbook("AnnualReport.xlsx");

// Create a directory for output images
string outputDir = "ChartImages";
Directory.CreateDirectory(outputDir);

// Process charts from all worksheets in the workbook
foreach (Worksheet sheet in workbook.Worksheets)
{
    // Skip worksheets without charts
    if (sheet.Charts.Count == 0)
        continue;
        
    Console.WriteLine($"Processing {sheet.Charts.Count} charts from worksheet '{sheet.Name}'");
    
    // Process each chart in the current worksheet
    for (int i = 0; i < sheet.Charts.Count; i++)
    {
        // Get the chart
        Chart chart = sheet.Charts[i];
        
        // Create a descriptive filename
        string sanitizedSheetName = string.Join("_", sheet.Name.Split(Path.GetInvalidFileNameChars()));
        string outputPath = Path.Combine(outputDir, $"{sanitizedSheetName}_Chart_{i+1}.png");
        
        // Define image options
        ImageOrPrintOptions imgOptions = new ImageOrPrintOptions
        {
            HorizontalResolution = 300,
            VerticalResolution = 300
        };
        
        // Convert and save the chart
        chart.ToImage(outputPath, imgOptions);
        
        Console.WriteLine($"  - Saved chart {i+1} to {outputPath}");
    }
}

Конвертирање графика у СВГ за веб апликације

SVG (Scalable Vector Graphics) је одличан формат за веб апликације, осигуравајући да ваши графици изгледају црисп на било којој резолуцији:

// Load the workbook
Workbook workbook = new Workbook("WebDashboard.xlsx");
Worksheet sheet = workbook.Worksheets["Performance Metrics"];

// Configure SVG export options
ImageOrPrintOptions svgOptions = new ImageOrPrintOptions
{
    ImageFormat = ImageFormat.Svg,
    SaveFormat = SaveFormat.Svg
};

// Export all charts to SVG with viewBox attribute for responsive display
for (int i = 0; i < sheet.Charts.Count; i++)
{
    Chart chart = sheet.Charts[i];
    
    // Export with viewBox attribute
    chart.ToImage($"WebChart_{i+1}.svg", svgOptions);
}

Мониторинг напретка конверзије за велике радне књиге

Када се бави радничким књигама који садрже бројне графике, корисно је пратити напредак конверзије:

// Load a large workbook with many charts
Workbook workbook = new Workbook("EnterpriseReports.xlsx");

// Create a custom stream provider to monitor progress
class ChartConversionStreamProvider : IStreamProvider
{
    private int _totalCharts;
    private int _processedCharts = 0;
    
    public ChartConversionStreamProvider(int totalCharts)
    {
        _totalCharts = totalCharts;
    }
    
    public Stream GetStream(string chartName, StreamType streamType)
    {
        // Create output stream
        string outputPath = $"Chart_{chartName}.png";
        Stream stream = new FileStream(outputPath, FileMode.Create);
        
        // Update and report progress
        _processedCharts++;
        double progressPercentage = (_processedCharts / (double)_totalCharts) * 100;
        Console.WriteLine($"Converting chart {_processedCharts} of {_totalCharts}: {progressPercentage:F1}% complete");
        
        return stream;
    }
    
    public void CloseStream(Stream stream)
    {
        if (stream != null)
        {
            stream.Close();
        }
    }
}

// Count total charts across all worksheets
int totalCharts = 0;
foreach (Worksheet sheet in workbook.Worksheets)
{
    totalCharts += sheet.Charts.Count;
}

// Create stream provider and options
ChartConversionStreamProvider streamProvider = new ChartConversionStreamProvider(totalCharts);
ImageOrPrintOptions options = new ImageOrPrintOptions
{
    HorizontalResolution = 300,
    VerticalResolution = 300
};

// Process each chart with progress tracking
int chartIndex = 0;
foreach (Worksheet sheet in workbook.Worksheets)
{
    foreach (Chart chart in sheet.Charts)
    {
        // Generate unique chart name
        string chartName = $"{sheet.Name}_Chart_{chartIndex++}";
        
        // Convert using stream provider
        chart.ToImage(streamProvider.GetStream(chartName, StreamType.Output), options);
    }
}

Најбоља пракса за графику конверзије слике

Да бисте постигли оптималне резултате приликом конверзије Екцел графике у слике, размотрите ове препоруке:

  • Прилагођавање резолуције на основу сврхе: Користите веће резолюције (300+ ДПИ) за штампање материјала и мање резолиције за веб приказивање.
  • Изаберите прави формат: Користите ПНГ за графике са транспаренцијом, ЈПЕГ за фотографије и СВД за веб апликације.
  • Проверите различите подешавања квалитета: Балансирајте величину датотеке и квалитет слике, посебно за JPEG компресију.
  • Sanitize Filenames: Kada generirate filename iz imena radnog lista, uklonite nevažeće znakove.
  • Implement Progress Tracking: Za radne knjige sa mnogim grafikama, pružite povratne informacije o napretku korisnicima.
  • Практирајте ресурсе савршено: Приближите струје и распоређивање објеката како би се спречиле пропусте меморије.

Закључак

Aspose.Cells for .NET пружа моћно, флексибилно решење за конверзију Екцел графике у различите формати слике програмски. да ли вам је потребна високо резолуција слика за штампање материјала, оптимизована графика за веб апликације, или Вектор СВГс за реактивне дизајне, Аппосе.Целлс испоручује конзистентне, висококвалитетне резултате без потребе за инсталацијом Мицрософт Ексел.

Следећи примере и најбоље праксе наведене у овом чланку, можете интегрисати могућности за конверзију графике на слике у ваше апликације .NET, побољшати радне токове визуелизације података и омогућити беспрекорно дељење визуелизација на основу Екцел-а на различитим платформама и медијима.

More in this category