Открыть Xml - сохранить апостроф при чтении файла Excel - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь прочитать файл Excel, который выглядит следующим образом:

Excel file

... чтение файла с использованием этого примера { ссылка }

Но когда я пытаюсь напечатать содержимое ячеек, пропускаются первые апострофы, и он печатает что-то вроде этого:

cell val: 10000001

вместо того, что я ожидаю:

cell val: '10000001

Есть ли способ достичь этого?

1 Ответ

1 голос
/ 19 марта 2020

Ведущий апостроф не считается частью значения ячейки. Это больше соглашение, которое использует 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);
}

// ...
...