Bagaimana untuk menukar carta dan lembaran Excel kepada imej PNG

Bagaimana untuk menukar carta dan lembaran Excel kepada imej PNG

Artikel ini menunjukkan bagaimana untuk menukar graf dan lembaran kerja Excel kepada imej PNG menggunakan Aspose.Cells LowCode ImageConverter dalam aplikasi .NET. Image Convertor menyediakan pendekatan yang lancar untuk mengeksport elemen visual Excel sebagai imeji berkualiti tinggi tanpa memerlukan pengekodan yang luas atau pengetahuan yang mendalam tentang struktur dalaman Excel.

Masalah dunia sebenar

Laporan pereka dan penganalisis perniagaan sering perlu memasukkan visualisasi berasaskan Excel ke dalam persembahan, dokumen, dan aplikasi web. Manual mengambil screenshots atau menggunakan perpustakaan manipulasi imej yang kompleks menghasilkan kualiti yang tidak konsisten, pemformatan yang hilang dan perkembangan yang signifikan.

Gambaran keseluruhan penyelesaian

Dengan menggunakan Aspose.Cells LowCode ImageConverter, kami boleh menyelesaikan cabaran ini dengan cekap dengan kod minimum. penyelesaian ini sesuai untuk pereka laporan dan penganalisis perniagaan yang perlu secara programmatik menghasilkan aset visual yang berkualiti tinggi daripada data Excel sambil mengekalkan pemformatan dan kesetiaan visual.

Prerequisites

Sebelum melaksanakan penyelesaian, pastikan anda mempunyai:

  • Visual Studio 2019 atau seterusnya
  • .NET 6.0 atau seterusnya (sesuai dengan .Net Framework 4.6.2+)
  • Aspose.Cells untuk pakej .NET yang dipasang melalui NuGet
  • Pemahaman asas tentang pemrograman C#

PM> Install-Package Aspose.Cells

Pelaksanaan langkah demi langkah

Langkah 1: Pemasangan dan Konfigurasi Aspose.Cells

Tambah pakej Aspose.Cells kepada projek anda dan termasuk ruang nama yang diperlukan:

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

Langkah 2: Sediakan data input anda

Tentukan fail Excel yang mengandungi carta atau lembaran kerja yang anda ingin konversi ke imej PNG. Pastikan fail itu wujud dan boleh diakses dari aplikasi anda:

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

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

Langkah 3: Mengesetkan opsyen ImageConverter

Setkan opsyen untuk proses ImageConverter mengikut keperluan anda:

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

Langkah 4: Melaksanakan proses ImageConverter

Melaksanakan operasi ImageConverter dengan opsyen yang dikonfigurasi:

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

Langkah 5: Menguruskan output

Memproses dan menggunakan imej PNG yang dihasilkan seperti yang diperlukan untuk aplikasi anda:

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

Langkah 6 : Menguruskan kesilapan

Menambah pemprosesan kesilapan yang betul untuk memastikan operasi yang kukuh:

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
}

Langkah 7: Mengoptimumkan prestasi

Pertimbangkan teknik pengoptimuman ini untuk persekitaran pengeluaran:

  • Gunakan aliran memori untuk pemprosesan volum tinggi untuk mengelakkan fail I/O berlebihan
  • Pelaksanaan pemprosesan serentak untuk pelbagai carta atau lembaran kerja
  • Menyesuaikan tetapan kualiti imej untuk keseimbangan yang sesuai antara berkualiti dan saiz fail
// 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);
}

Langkah 8: Contoh pelaksanaan lengkap

Berikut ialah contoh kerja lengkap yang membuktikan keseluruhan proses:

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

Penggunaan Kasus dan Permohonan

Sistem Laporan Perniagaan

Penganalisis kewangan boleh secara automatik menghasilkan aset visual daripada laporan Excel untuk dimasukkan ke dalam persembahan eksekutif atau papan kekunci. ini menghapuskan pemotretan skrin manual dan memastikan penglihatan yang konsisten, berkualiti tinggi yang mewakili data sumber dengan tepat.

Proses Integrasi Data

Aliran kerja integrasi boleh secara automatik menukar carta berasaskan Excel kepada format imej untuk dimasukkan ke dalam laporan PDF, portal web, atau pemberitahuan e-mel.

Pemprosesan dokumen automatik

Sistem pengeluaran dokumen boleh secara programmatik mengekstrak carta dan visualisasi daripada buku kerja Excel untuk mencipta laporan profesional yang menggabungkan data, teks, dan unsur-unsur visual.

Tantangan dan Penyelesaian Bersama

Tantangan 1: Mengekalkan kualiti imej yang tinggi

Penyelesaian: Tetapkan ImageOrPrintOptions dengan tetapan kualiti dan parameter resolusi yang sesuai untuk memastikan output yang optimum.Untuk persembahan dan bahan cetak, gunakan seting berkualiti 90 atau lebih tinggi dan pertimbangkan untuk menyesuaikan tetingkap DPI berdasarkan penggunaan yang dimaksudkan.

Tantangan 2: Menguruskan Lembaran Kerja Besar

** Penyelesaian:** Gunakan sifat-sifat ImageOrPrintOptions.PageIndex dan PageCount untuk memproses bahagian-bahagian tertentu lembaran kerja yang besar.Untuk lembar Kerja yang sangat besar, pertimbangkan menggunakan teknik pelekat dengan mengkonfigurasi tetapan halaman yang disesuaikan dalam fail Excel.

Tantangan 3: Pergerakan yang tidak konsisten di sekitar persekitaran

** Penyelesaian:** Pastikan bahawa fon yang digunakan dalam fail Excel boleh didapati pada pelayan, atau gunakan tetapan penggantian fon dalam Aspose.Cells. Ujian menyeluruh di seluruh persekitaran pelancaran yang berbeza dan pertimbangkan untuk memasukkan font yang diperlukan dalam aplikasi anda.

Pertimbangan prestasi

  • Gunakan aliran memori daripada fail I/O apabila menukar beberapa imej dalam proses batch
  • Untuk persekitaran yang pelbagai, melaksanakan mekanisme kunci yang sesuai apabila mengakses sumber bersama
  • Pertimbangkan saiz lembaran dan kerumitan apabila menetapkan pilihan kualiti - kerentanan yang lebih tinggi memerlukan lebih banyak sumber pemprosesan

amalan terbaik

  • Melaksanakan mekanisme caching untuk carta yang sering diakses untuk mengelakkan penukaran berulang
  • Menubuhkan konvensyen nama sistematik untuk fail output untuk menjejaki sumber setiap imej
  • Menyertakan metadata dalam direktori output imej untuk mengekalkan pengesanan kembali ke fail sumber Excel
  • Mengesahkan fail input Excel sebelum pemprosesan untuk memastikan mereka mengandungi carta dan data yang dijangka
  • Pelaksanaan logging untuk menjejaki penukaran yang berjaya dan sebarang masalah yang timbul semasa pemprosesan

Senario lanjutan

Untuk keperluan yang lebih kompleks, pertimbangkan pelaksanaan lanjutan ini:

Senario 1: Mengekstrak hanya carta tertentu daripada lembaran kerja

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

Senario 2: Mencipta imej 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);
    }
}

Conclusion

Dengan melaksanakan Aspose.Cells LowCode ImageConverter, anda boleh dengan cekap menukar carta Excel dan lembaran kerja kepada imej PNG berkualiti tinggi dan menyempurnakan penciptaan aset visual untuk laporan dan persembahan. pendekatan ini secara signifikan mengurangkan masa pembangunan dan usaha manual sambil mengekalkan kesetiaan visual dan konsistensi pemformatan.

Untuk maklumat lanjut dan contoh tambahan, rujuk kepada Aspose.Cells.LowCode API rujukan .

 Melayu