Quantcast
Channel: ClosedXML - The easy way to OpenXML
Viewing all articles
Browse latest Browse all 1877

New Post: Cell Merge Performance

$
0
0
Pick up the latest source code, it exposes range.Merge(Boolean checkIntersects) which allows you to turn off a check to see if the new merge breaks another merge. If you know what you're doing (you know you're not intersecting merged ranges) then you don't need this.

I don't know about your real code but the example you gave does a whole lot of unnecessary steps. Here's the shorter version:
int total = 5000;
var timer = System.Diagnostics.Stopwatch.StartNew();       
using (XLWorkbook wb = new XLWorkbook(XLEventTracking.Disabled))
{
    using (var ws = wb.AddWorksheet("MergeCellsWorksheet"))
    {
        // Insert some values
        for (int i = 1; i <= total; i += 2)
        {
            ws.Cell(i, 1).Value = "Merge Cell 1";
            ws.Cell(i, 3).Value = "Merge Cell 2";
            ws.Cell(i, 4).Value = "Merge Cell 3";
            ws.Cell((i + 1), 4).Value = "Merge Cell 4";

            ws.Range("A" + i + ":B" + (i + 1)).Merge(false);
            ws.Range("C" + i + ":C" + (i + 1)).Merge(false);
            ws.Range("D" + i + ":E" + i).Merge(false);
            ws.Range("D" + (i + 1) + ":E" + (i + 1)).Merge(false);
        }
    }
    wb.SaveAs(@"c:\temp\saved.xlsx");
}
timer.Stop();
Console.WriteLine("Took {0}s", timer.Elapsed.TotalSeconds);
Console.WriteLine("Done");

Viewing all articles
Browse latest Browse all 1877

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>