【问题标题】:How to get the openxml.spreadsheet.cell screen display value如何获取openxml.spreadsheet.cell屏幕显示值
【发布时间】:2016-01-21 17:16:47
【问题描述】:

我有一个 C# 应用程序,它读取在 Excel 2013 中创建的上传的 Excel 文件 (.xslx)

我使用 C# openxml 库读取每个单元格,将每个单元格放入每个行集合的单元格集合中。

代码可以正常工作,只是它没有正确读取格式化的 Excel 单元格值。

这是单元格在 excel 中的显示方式:

和来自:

当 C# 应用程序读取该单元格时,我检查了该单元格的 DocumentFormat.OpenXml.Spreadsheet.Cell cell 属性,但没有一个单元格属性等于我想要的 May-15 的值。

我注意到 cell.DataType 和 cell.CellFormula 都是空的,所以它们不能用来确定格式。

cell.InnerText 的值为“42125”。如果我将 Excel 中的单元格格式更改为常规,则显示为 42125。

我正在使用this文章中的代码

这是我正在使用的代码 sn-p

for (var i = 0; i < rows.Count; i++)
{
    var dataRow = new List<string>();
    data.DataRows.Add(dataRow);
    var row = rows[i];
    var cellEnumerator = GetExcelCellEnumerator(row);
    while (cellEnumerator.MoveNext())
    {
        var cell = cellEnumerator.Current; //return the current DocumentFormat.OpenXml.Spreadsheet.Cell
        var text = ReadExcelCell(cell, workbookPart).Trim();
        dataRow.Add(text);
    }
}

.

private string ReadExcelCell(Cell cell, WorkbookPart workbookPart)
{
    var cellValue = cell.CellValue;
    var text = (cellValue == null) ? cell.InnerText : cellValue.Text;
    if ((cell.DataType != null) && (cell.DataType == CellValues.SharedString))
    {
        text = workbookPart.SharedStringTablePart.SharedStringTable
            .Elements<SharedStringItem>().ElementAt(
                Convert.ToInt32(cell.CellValue.Text)).InnerText;
    }

    return (text ?? string.Empty).Trim();
}

问题:

  1. 如何读取5月15日cell.InnerText的显示值?

  2. 如果格式为 mmm-y,是否可以使用标准 C# 字符串/日期格式将“May-15”转换为“42125”或“42125”转换为“May-15”?

【问题讨论】:

    标签: c# excel-formula openxml openxml-sdk


    【解决方案1】:

    第二个问题的答案:

    如何将 42125 转换为 May-15

    var myval = String.Format("{0:MMM-yy}", DateTime.FromOADate(42125));
    

    将 May-15 转换为 42125

    var myval =  DateTime.ParseExact("May-15", "MMM-yy", System.Globalization.CultureInfo.InvariantCulture).ToOADate();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2023-01-29
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多