C# 如何批量删除Excel单元格中的公式只保留数据

在创建Excel报表时,我们经常会用到很多公式来计算数据,创建后出于保密性或其他一些原因,有些时候我们可能想删除这些公式,只保留数据。这篇文章将介绍如何使用Free Spire.XLS组件和C#批量删除Excel文档中的所有公式并保留数据。

下面Excel文档工作表中D列的单元格都包含有公式,我选中了其中一个单元格来截图:

C# 如何批量删除Excel单元格中的公式只保留数据_第1张图片

在使用代码前,需要创建一个C#应用程序,下载Free Spire.XLS组件并从安装文件夹下引用Spire.Xls.dll到程序中。

具体步骤如下:

步骤1:创建Workbook实例,加载Excel文档。

Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xlsx");

步骤2:遍历文档中所有工作表,找到其中所有包含公式的单元格,获取单元格中公式的数据,然后清除单元格中的内容,最后将数据再次赋值给单元格。

foreach (Worksheet sheet in workbook.Worksheets)
{
   foreach (CellRange cell in sheet.Range)
    {
       if(cell.HasFormula)
        {
            Object value = cell.FormulaValue;                       
            cell.Clear(ExcelClearOptions.ClearContent);
            cell.Value2 = value;
        }
    }
}
步骤3:保存文档。

workbook.SaveToFile("DeleteFormula.xlsx",ExcelVersion.Version2013);

删除公式后的效果:

C# 如何批量删除Excel单元格中的公式只保留数据_第2张图片

完整代码:

//创建Workbook实例
Workbook workbook = new Workbook();
//加载Excel文档
workbook.LoadFromFile("Input.xlsx");
 
//遍历文档中所有工作表,找到其中所有包含公式的单元格,获取单元格中公式的数据,然后清除单元格中的内容,最后将数据再次赋值给单元格
foreach (Worksheet sheet in workbook.Worksheets)
{
   foreach (CellRange cell in sheet.Range)
    {
       if(cell.HasFormula)
        {
            Object value = cell.FormulaValue;                       
            cell.Clear(ExcelClearOptions.ClearContent);
            cell.Value2 = value;
        }
    }
}          
 
//保存文档
workbook.SaveToFile("DeleteFormula.xlsx",ExcelVersion.Version2013);


 

你可能感兴趣的:(.NET,Excel,C#,excel,公式)