C# 以编程方式在Excel中导入图片变得太慢
我已经编写了一个Windows窗体应用程序,在该应用程序中,对于Excel文件的每一行,我都要导入一张位于内联网上服务器中的jpg图片。 Excel文件由大约2000行组成。 插入图片的代码如下所示: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
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的示例: