C# OpenXml-读取Excel文件时保留撇号
我正在尝试读取一个Excel文件,该文件如下所示: …使用此示例读取文件 但是当我试图打印单元格的内容时,它缺少了前面的撇号,它打印出如下内容:C# OpenXml-读取Excel文件时保留撇号,c#,excel,openxml-sdk,C#,Excel,Openxml Sdk,我正在尝试读取一个Excel文件,该文件如下所示: …使用此示例读取文件 但是当我试图打印单元格的内容时,它缺少了前面的撇号,它打印出如下内容: cell val:10000001 而不是我所期望的: cell val:'10000001 有没有办法做到这一点?前面的撇号不被认为是单元格值的一部分。这更像是Excel使用一些文本而不是数字的惯例 举个例子,假设您想在某个单元格中写入0001,如果您这样写,MS Excel会将其解析为一个数字,并将单元格设置为数字1。 但是,如果您使用前导撇号编
cell val:10000001
而不是我所期望的:
cell val:'10000001
有没有办法做到这一点?前面的撇号不被认为是单元格值的一部分。这更像是Excel使用一些文本而不是数字的惯例 举个例子,假设您想在某个单元格中写入0001,如果您这样写,MS Excel会将其解析为一个数字,并将单元格设置为数字1。
但是,如果您使用前导撇号编写文本,则MS Excel将保持原样 无论如何,下面是如何检测是否应该添加前导撇号:
var document = SpreadsheetDocument.Open(filePath, false);
var sharedStringTable = document.WorkbookPart.SharedStringTablePart.SharedStringTable;
var cellFormats = document.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats;
// ...
if (cell.DataType == CellValues.SharedString)
{
bool isQuoted = false;
if (cell.StyleIndex != null && cell.StyleIndex.HasValue)
{
var cellFormat = cellFormats.ChildElements[(int)cell.StyleIndex.Value] as CellFormat;
isQuoted = cellFormat.QuotePrefix;
}
Console.WriteLine("cell val: " + (isQuoted ? "'" : "") + sharedStringTable.ElementAt(Int32.Parse(cellValue)).InnerText);
}
// ...
谢谢,这正是我想要的。也很有帮助的解释,,