public static void WriteLinks(this Workbook wb, ILinksAnalysis links)
        {
            if (wb == null)
            {
                throw new ArgumentNullException(nameof(wb));
            }
            if (links == null)
            {
                throw new ArgumentNullException(nameof(links));
            }

            wb.DeleteTargetWorksheet(LinksSheetName);
            wb.DeleteTargetWorksheet(FilesSheetName);
            wb.DeleteTargetWorksheet(ErrorsSheetName);

            if (links.Links.Count == 0 && links.Errors.Count == 0)
            {
                MessageBox.Show("No external links found!", "", MessageBoxButtons.OK, MessageBoxIcon.Information,
                                MessageBoxDefaultButton.Button1);
            }
            else
            {
                var wsLinks  = wb.CreateTargetWorksheet(LinksSheetName);
                var wsFiles  = wb.CreateTargetWorksheet(FilesSheetName);
                var wsErrors = wb.CreateTargetWorksheet(ErrorsSheetName);

                wsLinks.WriteLinksAnalysis(links);
                wsFiles.WriteLinksFiles(links.Files);
                wsErrors.WriteLinksErrors(links.Errors);

                wb.Application.StatusBar = false;
            }
        }
        public static void WriteLinksAnalysis(this Worksheet ws, ILinksAnalysis links)
        {
            if (ws == null)
            {
                throw new ArgumentNullException(nameof(ws));
            }
            if (links == null)
            {
                throw new ArgumentNullException(nameof(links));
            }

            if (links.Links.Count > 0)
            {
                var calculation = ws.Application.Calculation;
                try {
                    ws.Application.Calculation    = XlCalculation.xlCalculationManual;
                    ws.Application.ScreenUpdating = false;

                    var links2D   = links.Links;
                    var MaxCol    = links2D.ColsCount();
                    var firstCell = ws.Cells[3, 1];
                    var lastCell  = ws.Cells[links2D.RowsCount() + 2, MaxCol];
                    var sheetData = ws.Range[firstCell, lastCell] as Range;

                    ws.Columns[MaxCol].EntireColumn.NumberFormat = "@"; // Formula column
                    links2D.FastCopyToRange(sheetData);

                    ws.InitializeTargetWorksheet(links2D.RowsCount() + 2, new List <string>()
                    {
                        "Target FullName", "Target Path", "Target FileName", "Target Worksheet", "Target Cell", "Link Type",
                        "Source FullName", "Source Path", "Source FileName", "Source Worksheet", "Source Cell", "Source Formula"
                    });
                }
                finally {
                    ws.Application.ScreenUpdating = true;
                    ws.Application.Calculation    = calculation;
                }
            }
        }