【问题标题】:How to get formatted display cell value in excel using closedXML?如何使用 closedXML 在 excel 中获取格式化的显示单元格值?
【发布时间】:2017-08-23 08:09:55
【问题描述】:

我想获取excel中显示的值,不是富文本,而是格式化后的显示值。

例如,如果值为“7/1/2015”,并且该单元格的数字格式为:cell.Style.NumberFormat.Format="d",则在 excel 中该数字将显示为 1。

我想通过使用 closedXML 获得“1”,但没有成功。以下是我尝试过的一些值:

cell.Value = "7/1/2015";
cell.RichText.Text = "7/1/2015";
cell.GetString() = "7/1/2015";
cell.GetFormattedString() = "7/1/2015";
cell.GetValue<string>() = "7/1/2015";

有谁知道如何做到这一点? 非常感谢!

【问题讨论】:

  • 什么是cell.DataType?它应该是日期时间。

标签: excel closedxml


【解决方案1】:

您是否尝试过使用NumberFormat.Format

例如。 worksheet.Cell(rowCount, 2).Style.NumberFormat.Format = "mm/dd/yyyy";

如果这就是你要找的,请告诉我。

【讨论】:

  • 恐怕不行。因为我在 excel 中看到的是值“1”,所以我想得到“1”而不是“7/1/2015”
【解决方案2】:

经过一番搜索,我发现了这个:https://github.com/ClosedXML/ClosedXML/issues/270

这表明 closedXML 格式化字符串与 Excel 不同,不会有修复。 所以我最终为日期时间值添加了我自己的自定义处理程序。

【讨论】:

  • 正确。因为使用了 .NET 格式化程序,所以您必须使用 %d 来获取您需要的值。但这在 Excel 中是行不通的。目前,您将不得不使用另一种解决方法。
【解决方案3】:

为了获取 Excel 单元格的显示值,我在 RichText 属性下方使用了这个,而不是使用 Cell.Value 属性(它给出了单元格的实际值,没有格式化)。

using cXl = ClosedXML.Excel;

string cellValue, col="A";
int row=1;
cXl.IXLWorksheet ws;

cellValue = ws.Cell(row, col)
              .RichText
              .ToString();

【讨论】:

  • 只有代码的答案通常被认为是低质量的。您能否为您的答案添加解释。
  • 请添加评论解释您的代码,并包括为什么您的代码可以满足 OP 的需要,或者它比您之前发布的其他答案更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
相关资源
最近更新 更多