c# - 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 时,它不会将它们显示为公式,而是显示为字符串(我的意思是工作表中没有计算,只有保存在数组中的字符串)我做错了什么?
解决方案
需要将数据插入到值中,然后将值设置为公式
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;
}
推荐阅读
- bash - 如何将bash中的第一个字母大写?
- pytorch - src_mask 和 src_key_padding_mask 的区别
- reactjs - 使用谷歌地图的api设置动态中心
- ios - 如何识别很多物体,同时添加很多节点?
- testing - 从 Azure DevOps (VSTS) 中的测试计划运行 SpecFlow 方案大纲或在测试执行后更新测试计划
- javascript - redux 中的 mapstatetoprops 会发生什么?
- node.js - Nextjs 函数在 vercel(以前称为 zeit)中的云无服务器函数中不起作用
- sql - 在按天分组的时间间隔内计算小时数
- r - 将坐标数据框绘制到基于组的路线中
- reactjs - 如何在 tsx react 中使用 npm/yarn