Есть ли способ изменить язык, используемый для свойств в xml-файлах xlsx-файла, созданного с использованием OpenXml в C #? - PullRequest
1 голос
/ 06 июня 2019

Я создаю файл Excel .xlsx, используя OpenXml.Все работает нормально, за исключением случаев, когда я открываю файл, Excel говорит, что есть проблемы с файлом и предлагает восстановить его.(Все отображается так, как должно быть.) После некоторого исследования я наткнулся на некоторые посты о значениях свойств для конкретного языка.Например, OpenXML пишет «TRUE» и «FALSE», но моя немецкая версия Excel хочет «WAHR» и «FALSCH».И именно поэтому Excel нужно восстановить файл.В журнале восстановления Excel просто написано «Информация о восстановленных ячейках на рабочем листе»

Я изменил свой Excel и язык системы с немецкого на английский (США), и теперь все работает нормально, и файл открывается безисправить сообщение.

Есть ли способ обойти это, так как это не постоянное решение.

РЕДАКТИРОВАТЬ: Может быть, проблема также может быть где-то еще, но все, что я пытался, кажется, подтверждает это подозрение.Но это также должно происходить при открытии Excel-файла, созданного кем-то с английским языком, но этого, похоже, не происходит.

Это пример того, как я пишу в файл.

                   for (int i = 0; i < rowcount; i++)
                {
                    row = new Row();
                    for (int j = 0; j < columncount; j++)
                    {
                        bool isNumeric = double.TryParse(result[i,j], out double n);
                        if (isNumeric)
                        {
                            row.Append(ConstructCell(result[i,j], CellValues.Number));
                        }
                        else
                        {
                            row.Append(ConstructCell(result[i, j], CellValues.String));
                        }                                            
                    }

                    sheetData.AppendChild(row);
                }
                worksheetPart.Worksheet.Save();

            }
        }

        private Cell ConstructCell (string value, CellValues dataType)
        {
            return new Cell()
            {
                CellValue = new CellValue(value),
                DataType = new EnumValue<CellValues>(dataType)
            };
        }

...