在创建Excel报表时,我们经常会用到很多公式来计算数据,创建后出于保密性或其他一些原因,有些时候我们可能想删除这些公式,只保留数据。这篇文章将介绍如何使用Free Spire.XLS组件和C#批量删除Excel文档中的所有公式并保留数据。
下面Excel文档工作表中D列的单元格都包含有公式,我选中了其中一个单元格来截图:
在使用代码前,需要创建一个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);
删除公式后的效果:
完整代码:
//创建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);