C# 如何使用OpenXMLSDK使用应用格式(格式化单元格值)获取单元格值
我一直在谷歌上搜索答案,但我找不到解决方案——到处都有人在讨论如何在文档中添加新的数字格式并加以应用 我需要的是将单元格值获取为具有应用格式的字符串,即与Excel显示的字符串相同的字符串 我已经想到,没有简单的方法或内置函数可以返回单元格的现成格式值 因此,在我看来,要获得价值,我需要做两件事: 1.获取格式字符串。 2.使用此字符串格式化单元格值 但这两个步骤我都有问题 可以很容易地获得CellFormat实例,该实例将包含NumberFormatId:C# 如何使用OpenXMLSDK使用应用格式(格式化单元格值)获取单元格值,c#,.net,openxml,openxml-sdk,C#,.net,Openxml,Openxml Sdk,我一直在谷歌上搜索答案,但我找不到解决方案——到处都有人在讨论如何在文档中添加新的数字格式并加以应用 我需要的是将单元格值获取为具有应用格式的字符串,即与Excel显示的字符串相同的字符串 我已经想到,没有简单的方法或内置函数可以返回单元格的现成格式值 因此,在我看来,要获得价值,我需要做两件事: 1.获取格式字符串。 2.使用此字符串格式化单元格值 但这两个步骤我都有问题 可以很容易地获得CellFormat实例,该实例将包含NumberFormatId: CellFormat cellFor
CellFormat cellFormat = (CellFormat) document.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.ElementAt(cell.StyleIndex);
但是,如果id对应于一种标准的预定义格式,那么如何使用这个NumberFormatId获取格式字符串呢?(即低于160)它们不在电子表格文档中,我不相信它们应该在应用程序中硬编码
此外,一旦以某种方式获得了格式字符串,如何将其应用于单元格值?据我所知,代码应该检查单元格值的类型,如果是数字,则使用格式字符串将其转换为字符串
我发现其中提到使用Microsoft.Office.Excel.Interop,但我更愿意只使用OpenXMLSDK
总的来说,我很惊讶在网上很难找到这个问题的确切答案,因为我认为这将是许多开发人员在日常工作中所需要的。。。我会在这里添加一些我认为值得的东西 首先是获取单元格的编号格式(一旦获得单元格格式:
string format = excel.WorkbookPart.WorkbookStylesPart.Stylesheet.NumberingFormats.Elements<NumberingFormat>()
.Where(i => i.NumberFormatId.ToString() == cellFormat.NumberFormatId.ToString())
.First().FormatCode;
希望它能帮助您……如果您希望采用与Excel中显示的格式相同的单元格值,请使用单元格对象的.Text属性。如下所示:
String formattedValue = cell.Text
非常感谢您分享此信息,Guido!请告诉我您是否能找到应用此格式的方法。另一方面,如果在您的解决方案中,您不必仅限于OpenXML SDK,您可以使用库,其中的所有操作似乎比纯OpenXML中的要简单得多(并且它构建在OpenXML之上)中的ClosedXML文档中有一行:“String booleanFormattedString=cellBoolean.GetFormattedString()在CellValue下显示(它不是Excel中显示的内容)
String formattedValue = cell.Text