我只是将值放在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
但现在的问题是,如何使用第二种方法将图像插入单元格?
提前致谢
答案 0 :(得分:0)
我敢打赌,将图像视为数据对象是不可能的。
即使你能够入侵它,我也不会信任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
}
是的,你一次只处理一张照片,但我不相信你可以改进。