簡體   English   中英

OpenXml - 讀取 Excel 文件時保留撇號

[英]OpenXml - Preserve apostrophe when reading Excel file

我正在嘗試讀取一個如下所示的 Excel 文件:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM