首页 > 解决方案 > excel互操作字符串数组到范围,不显示为公式

问题描述

我正在使用 excel 互操作,我有一个函数,我将二维字符串数组设置为范围,范围是一组公式,例如

{"=COUNT(A12:A300)","=COUNT(B12:B300)","=COUNT(C12:C300)"}

我有一个简单的函数将数组写入范围

    private void WriteStringRangeToExcel(string[,] s, int rowNumber, int cellStart)
    {
        Excel.Range c1 = (Excel.Range)ws.Cells[rowNumber, cellStart];
        Excel.Range c2 = (Excel.Range)ws.Cells[rowNumber + s.GetLength(0) - 1, s.GetLength(1)];
        Excel.Range range = ws.get_Range(c1, c2);
        range.Formula = s;            
    }

奇怪的是,当我打开 excel 时,它不会将它们显示为公式,而是显示为字符串(我的意思是工作表中没有计算,只有保存在数组中的字符串)我做错了什么?

标签: c#excelexcel-interop

解决方案


需要将数据插入到值中,然后将值设置为公式

    private void WriteStringRangeToExcel(string[,] s, int rowNumber, int cellStart)
    {
        Excel.Range c1 = (Excel.Range)ws.Cells[rowNumber, cellStart];
        Excel.Range c2 = (Excel.Range)ws.Cells[rowNumber + s.GetLength(0) - 1, s.GetLength(1)];
        Excel.Range range = ws.get_Range(c1, c2);
        range.Value = s;
        range.Value = range.Formula;
    }

推荐阅读