C# 以编程方式在Excel中导入图片变得太慢

C# 以编程方式在Excel中导入图片变得太慢,c#,excel,com,C#,Excel,Com,我已经编写了一个Windows窗体应用程序,在该应用程序中,对于Excel文件的每一行,我都要导入一张位于内联网上服务器中的jpg图片。 Excel文件由大约2000行组成。 插入图片的代码如下所示: String currentFilePath = getCurrentFileName(pictureDirectory, stagione, currentLine, currentModello, currentMateriale, currentColore); Excel.Range oR

我已经编写了一个Windows窗体应用程序,在该应用程序中,对于Excel文件的每一行,我都要导入一张位于内联网上服务器中的jpg图片。 Excel文件由大约2000行组成。 插入图片的代码如下所示:

String currentFilePath = getCurrentFileName(pictureDirectory, stagione, currentLine, currentModello, currentMateriale, currentColore);
Excel.Range oRange = (Excel.Range)xlWorkSheet.Cells[rowIndex, indexColumnFoto];
Picture picture = ((Pictures)xlWorkSheet.Pictures(Type.Missing)).Insert(currentFilePath, Type.Missing);
picture.Left = (double)oRange.Left;
picture.Top = (double)oRange.Top;

if (picture.Height > (double)oRange.Height)
{
    if (picture.Height > 400)
    {
        oRange.RowHeight = 400;
    }
    else
    {
        oRange.RowHeight = picture.Height;
    }
}
这个操作正在BackgroundWorker中运行,一切正常,只是过了一段时间,过程变得非常缓慢。 我在网上寻找解决方案,但什么也没找到。我找到的唯一相关解决方案是在Excel中导入文本而不是图片的代码片段

如果你有任何想法,请告诉我。考虑到我的用户在抱怨,但是我认为在Excel中导入1500到2000个图像的软件应该相当慢,不是吗? 还有一件事,正如你所看到的,我用COM来做这项工作。还有其他方法导入图片吗


非常感谢

C#->Office COM速度很慢。结束。我一直在使用,虽然它允许您创建Excel无法打开的xlsx文件,但速度要快得多。它声称也可以制作图片。

使用COM并从服务器上提取数据,正如您所做的那样,您可能只会看到一些细微的改进

首先,对于Excel应用程序,您应该设置
Application.screenUpdate=false在例程开始时,然后在完成后,将其设置回
Application.screenUpdate=true。这将有助于稍微提高性能

你还可以考虑首先抓取所有图片,并将它们放在列表> <代码>对象中,并将它们放在Excel中,并将它们放在高度、目标<代码>橙色< /代码>和<代码>橙色。当您在BackgroundWorker中运行此操作时,这可能是您无论如何都希望执行的操作。结合上面的#1,您可能会看到一些改进

如果您使用的是Excel2007/2010(这不适用于早期版本),则可以使用OpenXMLSDK。速度可能会快得多。虽然这不是一个客户端操作-执行此操作时,XLSX应该关闭,但结果只会像从服务器通过线路传送图片一样慢。以下是如何使用SDK将多张图片插入Excel的示例: