一次将格式应用于许多Excel单元格

我想格式化所有在我的Excel文件中增加的值,我有一个“小”和“快”的解决scheme,像这样:

Item2是一个List<string>Item3是一个List<List<string>>

 if (chkWithValues.Checked && results.Item3.Any()) { var rows = results.Item3.Count; var cols = results.Item3.Max(x => x.Count); object[,] values = new object[rows, cols]; object[,] format = new object[rows, cols]; //All returned items are inserted into the Excel file //Item2 contains the database types, Item3 the Values // pgMain shows the progress for the selected tables for (int j = 0; j < results.Item3.Count(); j++) { int tmpNbr = 1; foreach (string value in results.Item3[j]) { values[j, tmpNbr - 1] = Converter.Convert(results.Item2[tmpNbr - 1], value).ToString().Replace("'", ""); format[j, tmpNbr - 1] = ExcelColumnTypes.ConvertToExcelTypes(results.Item2[tmpNbr - 1]); tmpNbr++; } pgMain.Maximum = results.Item3.Count(); pgMain.PerformStep(); } Excel.Range range = xlWorksheet.Range["A3", GetExcelColumnName(cols) + (rows + 2)]; range.Value = values; range.NumberFormat = format; } 

为了有效地添加数字格式,我已经find了一个2d数组的解决scheme,它包含了所有应该设置的数字格式。

问题是,当我有超过(我认为) 50.000单元格式时,出现以下错误信息"Unable to set the NumberFormat property of the Range class"

有人知道一个解决scheme是快速的,可以处理大量的细胞没有错误吗?

更新:ExcelColumnTypes.ConvertToExcelTypes

 public static string ConvertToExcelTypes(string databaseType) { if (DatabaseColumnTypes.DOUBLE.Contains(databaseType)) return DOUBLEPO1; if (DatabaseColumnTypes.DATE.Contains(databaseType)) return DATE2; if (DatabaseColumnTypes.INTEGER.Contains(databaseType)) return INT; return TEXT; } 

DatabaseColumnTypes是带有const或者直接const的List。 样品:

 public const string VARBINARY = "varbinary"; public static List<string> STRING = new List<string>() { CHAR, VARCHAR, TEXT, NTEXT, NCHAR, NVARCHAR, BINARY, VARBINARY }; 

请改变

 range.NumberFormat = format; range.NumberFormatLocal = format; 

那么它应该工作