簡體   English   中英

Excel / Powerpoint Office互操作-將圖表從Excel工作表復制到Powerpoint幻燈片

[英]Excel/Powerpoint Office Interop - Copy chart from Excel Sheet to Powerpoint Slide

我有一個Excel工作簿,里面有多個圖表。 我創建了一個for循環,用於獲取每個工作表中的圖表。 這可以正常工作。

我遇到的問題是我不能導入多個圖表,只能導入一個,並且它作為圖片而不是圖表導入。

當我嘗試導入多個圖表時,在此行上出現COMException

objChart.Copy();

完整錯誤:

An exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll but was not handled in user code

Additional information: Exception from HRESULT: 0x800A03EC

這是我的完整方法:

public int ImportExcelChartsFromWorkbookToSlides(int startingSlideIndex, string workbookPath, string[] slideTitles)
{
    int slideIndex = startingSlideIndex;
    int titleIndex = 0;
    EXCL.Application objExclApp = new EXCL.Application();
    EXCL.Workbook objWorkbook = objExclApp.Workbooks.Open(workbookPath, Editable: false);
    foreach (EXCL.Worksheet objSheet in objWorkbook.Worksheets)
    {
        foreach (EXCL.ChartObject objChart in objSheet.ChartObjects())
        {
            AddTitleOnlySlide(slideIndex);
            SetTitleOnlySlideTitle(slideTitles[titleIndex]);

            // Copy Chart from Sheet to Slide
            objChart.Copy();

            PPT.ShapeRange objShapeRange = objSlide.Shapes.Paste();

            // TODO PARAMETER
            objShapeRange.Left = 10;
            objShapeRange.Top = 100;

            slideIndex++;
            titleIndex++;
        }
    }
    return slideIndex;
}

有人看到此代碼有任何問題嗎?

UPDATE

如果我更改此行:

objChart.Copy();

對此:

objChart.CopyPicture();

我沒有問題..是什么原因引起的?

我設法通過使用objChart.CopyPicture();來解決此問題objChart.CopyPicture(); 但這導致某些用戶崩潰 ,所以我最終這樣做:

string chartPath = $@"{workbookPath.Substring(0, workbookPath.LastIndexOf("\\") + 1)}{DateTime.Now.Ticks}.png";
objChart.Chart.Export(chartPath, "PNG", false);
objSlide.Shapes.AddPicture2(chartPath, MsoTriState.msoFalse, MsoTriState.msoTrue, chartPosLeft, chartPosTop, compress: MsoPictureCompress.msoPictureCompressFalse);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM