private void GenerateExcelSheet(Application excel, System.Data.DataTable table) { var worksheet = (Worksheet)excel.Worksheets.Add(); try { worksheet.Name = table.TableName; for (int i = 1; i < table.Columns.Count + 1; ++i) { worksheet.Cells[1, i] = table.Columns[i - 1].ColumnName; } int sheetRow = RowOffset; for (int row = RowOffset; row < table.Rows.Count + RowOffset; ++row) { bool skip = false; int languageIndex = LanguageEncodings.Count; foreach (var language in LanguageEncodings.OrderByDescending(x => x.IsPrimary ? 0 : 1)) { if (!language.IsPrimary && SkipLocalized && !string.IsNullOrWhiteSpace(table.Rows[row - RowOffset][language.Encoding].ToString()) && (string.IsNullOrWhiteSpace(SkipLocalizedIncludeFilterRegex) || !Regex.IsMatch(table.Rows[row - RowOffset][language.Encoding].ToString(), SkipLocalizedIncludeFilterRegex, RegexOptions.Multiline) ) ) { skip = true; break; } worksheet.Cells[sheetRow, languageIndex + 1] = table.Rows[row - RowOffset][language.Encoding]; languageIndex -= 1; } if (!skip) { worksheet.Cells[sheetRow, 1] = (string)table.Rows[row - RowOffset][Key]; sheetRow++; } } if (sheetRow == RowOffset && SkipEmptyResources) { //((Worksheet)excel.ActiveWorkbook.Sheets[worksheet.Index]).Delete(); //excel.ActiveWorkbook.Save(); //excel.Worksheets.Delete(); //(excel.Worksheets[worksheet.Index] as Worksheet).Delete(); excel.DisplayAlerts = false; worksheet.Delete(); excel.DisplayAlerts = true; } } catch (Exception ex) { Console.WriteLine(ex); } }