בעוד Excel מספקת יכולות תרשים חזקות, ישנם מספר עצום של סצנות שבהן אתה צריך לחלץ את האלמנטים החזותיים האלה בתור תמונות בודדות:

  • להכניס תרשימים לדיווחים והצגות
  • אינטגרציה של ויזואליזציות באפליקציות אינטרנט
  • שיתוף אינטליגנציה ללא הפצה של כל הדפוסים
  • יצירת מסמכים עם תצוגות תרשים
  • יצירת תוכן ויזואלי דינמי עבור מדפסת אינטליגנציה עסקית

Aspose.Cells for .NET מציעה פתרון מוצק כדי להפוך את תרשימים Excel לתמונות באיכות גבוהה ללא צורך בהתקנה של Microsoft Excel.

למה לבחור Aspose.Cells עבור שינוי תרשים?

גישות מסורתיות לאוטומציה של Excel עשויות להיות בעייתיות בסביבות ייצור בשל:

  • פגיעות בביטחון
  • מורכבות הפעלה
  • אתגרים רישיון
  • בקבוקי ביצועים
  • בעיות יציבות

Aspose.Cells מספקת API מוקדש שנועד במיוחד לעיבוד של קבצי Excel בצד השרת, ומספק ביצועים מעולים ואמינות.

להתחיל

לפני שאתם נכנסים לדוגמאות, ודא שיש לכם:

using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Rendering;

תרשים בסיסי לשינוי תמונה

בואו נתחיל עם דוגמה פשוטה להמיר את כל התרשים בדף עבודה לתמונות באמצעות C# Excel Chart to Image:

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

איכות תמונה משופרת עם אפשרויות מותאמות אישית

עבור יישומים מקצועיים, תצטרך לעתים קרובות לשלוט באיכות ובמראה של התמונות המייצרות.

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

רשימות עיבוד Batch מ-MultiWorksheets

באפליקציות ארגוניות, ייתכן שתצטרך לעבד תרשימים דרך מספר לוח עבודה:

// 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 עבור יישומי אינטרנט

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

השיטות הטובות ביותר לשינוי תמונה

כדי להשיג תוצאות אופטימליות בעת ההמרה של תרשימים Excel לתמונות, לשקול את ההמלצות הבאות:

  • התאמה מבוססת למטרה: השתמש ברזולוציות גבוהות יותר (300+ DPI) עבור חומרי הדפסה ורזולוציות נמוכות יותר עבור תצוגה באינטרנט.
  • בחירת הפורמט הנכון: השתמש ב- PNG עבור תרשימים עם שקיפות, ב- JPEG עבור תמונות ו- SVG עבור יישומי אינטרנט.
  • בדוק הגדרות איכות שונות: איזון גודל הקובץ ואיכות התמונה, במיוחד עבור הדחיסה JPEG.
  • סניטיז Filenames: בעת יצירת filenames מתוך שמות לוח העבודה, להסיר אותות לא נכונים.
  • יישום מעקב התקדמות: עבור ספרי עבודה עם מספר רב של תרשימים, לספק משוב התקדמות למשתמשים.
  • הנהלת משאבים בצורה נכונה: זרמים קרובים ופינוי אובייקטים כדי למנוע פריצות זיכרון.

מסקנה

Aspose.Cells for .NET מספקת פתרון חזק וגמיש להמיר תרשימים של Excel לתבניות תמונה שונות בתכנית.לא משנה אם אתה זקוק לתמונות ברזולוציה גבוהה עבור חומרי הדפסה, גרפיקה אופטימלית עבור יישומי אינטרנט, או SVGs וקטור עבור עיצובים התגובה, Aspose.Cells מספקת תוצאות עקביות ואיכות גבוהה ללא צורך בהתקנה של Microsoft Excel.

על-ידי לעקוב אחר הדוגמאות והשיטות הטובות המפורטות במאמר זה, תוכלו לשלב את יכולות ההמרה של תרשים לתמונה באפליקציות .NET שלכם, לשפר את זרימת העבודה של ויזואליזציה של נתונים ולסייע לשיתוף ללא הרף של ויזואליזציות מבוססות Excel ברחבי פלטפורמות ומדיה שונות.

More in this category