使用互操作库在 Excel 中更快地添加图像
本文关键字:添加 图像 Excel 互操作 | 更新日期: 2023-09-27 18:35:15
我只是将值放入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 会在未来的版本中支持它。 相反,我会创建一个对象数组,这是您的图片数据,然后在插入数据后,浏览您的图片数据数组并一次插入一个。
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
}
是的,你仍然一次处理一张图片,但我不相信你可以改进这一点。