gpt4 book ai didi

.net - 更新 Excel 文件中的小计

转载 作者:行者123 更新时间:2023-12-03 01:19:08 25 4
gpt4 key购买 nike

我使用 OpenXML 库获取数据表并将其粘贴到预先格式化的 Excel 文件中。这很好用。

我遇到的问题是预格式化 Excel 文件的顶部有一个小计行,它被设置为对该数据的每一列进行小计(因此每列的顶部都有一个小计)。当我在创建Excel文件后打开它时,这些值都设置为0,插入数据表时它们没有更新。如果您突出显示这些小计单元格之一,然后按 Enter 键,它将更新并显示正确的值。

用户打开下载的电子表格后,更新这些值并显示正确值的最简单方法是什么?

创建电子表格的代码:

MemoryStream memoryStream = SpreadsheetReader.StreamFromFile(TemplateDirectory + @"\" + "exceltTemplate.xlsx");
doc = SpreadsheetDocument.Open(memoryStream, true);
worksheetPart = SpreadsheetReader.GetWorksheetPartByName(doc, currentSheetName);
writer = new WorksheetWriter(doc, worksheetPart);
cellName = "A8";
writer.PasteDataTable(reports.Tables[0], cellName);
SpreadsheetWriter.Save(doc);

最佳答案

OpenXML 库不会重新计算公式的结果。解决此问题的一种方法是从小计单元格中删除值(而不是公式)。这会导致 Excel 自动重新计算。

This link更详细地解释它。大约在页面的中间,您将看到以下代码,这对您的需求很重要:

// remove all values of cells with formulas on a sheet
// so that Excel refreshes them upon Open
public static void ClearAllValuesInSheet
(SpreadsheetDocument spreadSheet, string sheetName)
{
WorksheetPart worksheetPart =
GetWorksheetPartByName(spreadSheet, sheetName);

foreach (Row row in
worksheetPart.Worksheet.
GetFirstChild().Elements())
{
foreach (Cell cell in row.Elements())
{
if (cell.CellFormula != null &&
cell.CellValue != null)
{
cell.CellValue.Remove();
}
}

}

worksheetPart.Worksheet.Save();
}

此代码删除所有包含公式和值的单元格的值。为了加快速度,您可以非常轻松地对其进行自定义以仅处理小计单元格。

关于.net - 更新 Excel 文件中的小计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com