如果我使用Excel Interop的范围,剪贴板将返回null。

时间:2018-08-03 09:58:39

标签: c# excel office-interop clipboard

我正在尝试制作一个程序,该程序可以创建菜单,然后从菜单中制作图片。这是我第一次使用这些“互操作性”,到目前为止,我设法使它们起作用。我已经尝试过各种解决方案,但是没有一个对我有用。

这是我到目前为止所拥有的:

        Range re = worksheet.Range["A1:U37"];
        re.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap);     
        IDataObject data = Clipboard.GetDataObject();
        Image image = (Image)data.GetData(DataFormats.Bitmap, true);
        image.Save("image.bmp", ImageFormat.Bmp);

据我所知,这应该是将excel中选定的范围复制到剪贴板,然后从那里检索它。但是对我来说,它总是在保存部分抛出一个异常,说“ System.NullReferenceException,图像为空”

编辑:文件打开和图像制作代码

        string path = Path.GetFullPath("just_an_excel.xlsx");
        Excel.Application excel = new Excel.Application();
        Workbook wb = excel.Workbooks.Open(path, false, true);
        Worksheet worksheet = (Worksheet)wb.Worksheets.get_Item(1);

        worksheet.Copy();
        worksheet = excel.Workbooks[2].Sheets[1];
        excel.Workbooks[1].Close();
        excel.Visible = true;

        Range re = worksheet.Range["A1:A7"];
        re.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap);
        IDataObject data = Clipboard.GetDataObject();
        Image image = (Image)data.GetData(DataFormats.Bitmap, true);
        image.Save("image.bmp", ImageFormat.Bmp);

0 个答案:

没有答案