使用Interop库在Excel中更快地添加图像

我只是简单地将数值放入Excel中,并将图像放入某些特定的单元格中。 我的代码示例看起来像这样;

//sb is a String Builder and gets filled by loop xlWorkSheet.Cells[sheetRowPosition, 4] = sb.ToString(); xlWorkSheet.Shapes.AddPicture(loadPath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, float.Parse(((left) + 5).ToString()), float.Parse(((top) + 5).ToString()), 60, 60); 

我已经完成了,就像循环一个集合并将数据插入单元格一样。 但是像龟一样慢。 所以我改变了我的想法,像这样刷新我的代码;

 private static void WriteArray(int rows, int columns, Worksheet worksheet) { var data = new object[rows, columns]; for (var row = 1; row <= rows; row++) { for (var column = 1; column <= columns; column++) { data[row - 1, column - 1] = "Test"; } } var startCell = (Range)worksheet.Cells[1, 1]; var endCell = (Range)worksheet.Cells[rows, columns]; var writeRange = worksheet.Range[startCell, endCell]; writeRange.Value2 = data; } 

http://www.clear-lines.com/blog/post/Write-data-to-an-Excel-worksheet-with-C-fast.aspx

但现在的问题是,如何使用第二种方法将图像插入到单元格?

提前致谢

我敢打赌,把图像当作数据对象是不可能的。

即使你能够侵入它,我也不会相信Excel在未来版本中支持它。 相反,我会创build一个对象数组,这是您的图片数据,然后插入数据后,通过您的图片数据数组,并一次插入一个。

 for (i = ROW LOOP) { for (j = COL LOOP) { if (ISIMAGE) { ImageArray.ADD(new imageData(i,j,ImageLoc)) } else { data[i,j] = "Test"; } } } writeRange.Value2 = data; foreach (imageData iData in ImageArray) { //Parse the object and load the picture to the right row/col } 

是的,你还在一次处理一张图片,但我不相信你可以改进。