[英]OpenXml - Preserve apostrophe when reading Excel file
我正在嘗試讀取一個如下所示的 Excel 文件:
...使用此示例讀取文件https://stackoverflow.com/a/26063965/281451
但是當我嘗試打印單元格的內容時,它缺少前導撇號,它打印出如下內容:
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);
}
// ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.