我有一个C#应用程序读取上传Excel文件(.xslx)在Excel中创建2013如何获得openxml.spreadsheet.cell屏幕显示值
我读每个单元将每个细胞进入细胞的集合每个使用C#openxml库的行的集合。
该代码正常工作,但它不能正确读取格式化的Excel单元格值。
这里是细胞是如何显示在Excel中:
我已经研究过该小区的DocumentFormat.OpenXml.Spreadsheet.Cell cell
属性时,C#应用程序读取它,但没有的单元格属性等于我想要的May-15的值。
我注意到cell.DataType和cell.CellFormula都是null,所以它们不能用来确定格式。
cell.InnerText值是“42125”。如果我更改在Excel中一般细胞格式,那么它显示为42125.
我使用从this文章
代码在这里是我使用
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();
}
问:
我怎么能读cell.InnerText五月-15的显示值?
如果格式为mmm-y,是否可以使用标准C#字符串/日期格式将“May-15”转换为“42125”或“42125”为“May-15”