是否有AddPicture的替代品? (C#,Epplus)

时间:2015-07-01 15:42:37

标签: c# excel epplus

我使用EPPlus将.csv文件转换为.xlsx,并使用ZXing将其中一列转换为条形码图像。一切正常但AddPicture的性能引发了一个问题。 .csv文件可以有数千条记录,记录计数越大,应用程序运行的速度就越慢。我已将问题缩小到AddPicture函数并读取它将图像复制到临时文件夹,将其插入电子表格,并删除临时图像,这是很多磁盘I / O.如果我注释掉AddPicture函数,应用程序将在1-2秒内运行。启用AddPicture函数会以指数方式(基于记录数)将运行时增加到无法使用的程度。

for (var r = 2; r < (workSheet.Dimension.End.Row + 1); r++)
{
    //set row height
    workSheet.Row(r).Height = 50;

    //create barcode string
    string myBarcode = String.Format("{0}", workSheet.Cells[r, 7].Text);

    //create image
    string newFileName = "C:/DUMP/barcodes/" + myBarcode + ".jpeg";

    if (!File.Exists(newFileName))
    {
        createBarcode(myBarcode, 100, 40);
    }

    //add image to worksheet
    var picture = workSheet.Drawings.AddPicture(myBarcode, new FileInfo (newFileName));

    //set image position
    int eppRow = r - 1;
    picture.SetPosition(eppRow, 10, 7, 5);

    //enable "TwoCell" to maintain column anchors
    picture.EditAs = OfficeOpenXml.Drawing.eEditAs.TwoCell;
}

我首先尝试在内存中创建图像并直接插入电子表格。上面显示的版本是将图像写入磁盘,并且只在必要时才创建新图像。在处理大量记录时,这两个版本都表现不佳。

EPPlus可以很好地转换.csv文件,ZXing可以快速创建图像。那些工作完美无瑕。但是使用AddPicture将图像插入Excel文件会导致性能问题。有没有人有关于如何解决这个问题的其他建议?

0 个答案:

没有答案