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

时间:2016-10-05 08:25:22

标签: c# excel

我想在excel文件中格式化所有添加的值,我有一个" small"和"快速"像这样的解决方案:

Item2List<string>Item3List<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;
}

要通过单个分配有效地添加数字格式,我找到了一个带有2d数组的解决方案,其中包含应设置的所有数字格式。

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

有人知道一个快速的解决方案,可以无错误地处理大量单元格吗?

更新: 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或direct const的List。 样品:

public const string VARBINARY = "varbinary";

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

1 个答案:

答案 0 :(得分:2)

请更改

range.NumberFormat = format;

range.NumberFormatLocal = format;

然后它应该工作