ExtremeML Отрицательный Экспонент Экспорта Проблема - PullRequest
2 голосов
/ 07 марта 2011

В C # у меня есть DataTable, который имеет допустимые значения, некоторые из которых представлены в экспоненциальном формате.Я экспортирую этот DataTable в файл xlsx, используя ExtremeML (который, как мне кажется, основан на OpenXML) и следующий код:

if (!Directory.Exists(savePath.Text))
        Directory.CreateDirectory(savePath.Text);

    using (var package = SpreadsheetDocumentWrapper.Create(savePath.Text + fileName + ".xlsx"))
    {
        for (int i = 0; i < dataset.Tables.Count; i++)
        {
            // declares worksheet
            var part = package.WorkbookPart.WorksheetParts.Add(dataset.Tables[i].TableName.ToString()); // second worksheet filled by second collection 

            bool first = true;
            int position = 0;
            for (int row = 0; row < dataset.Tables[i].Rows.Count; row++)
            {
                for (int col = 0; col < dataset.Tables[i].Columns.Count; col++)
                {
                    // adds to file 
                    if (first)
                        part.Worksheet.SetCellValue(new GridReference(row, col), dataset.Tables[i].Columns[col].ColumnName.ToString());
                    else
                        part.Worksheet.SetCellValue(new GridReference(row, col), dataset.Tables[i].Rows[position][col]);
                }
                if (first)
                {
                    first = false;
                }
                else
                    position++;
            }
        }
    }

Полученный файл Excel почти приемлем, за исключением отрицательных экспоненциальных отрицательных чисел (например,-7.45E-05) обрабатывать знак минус как цифру (предыдущий пример становится 0,000-745).В столбце DataTable все столбцы установлены как двойные, поэтому файл Excel должен форматировать их так.

Есть идеи относительно причины этой проблемы?(Кроме того, я знаю, что код - неприятное занятие, код не мой, и я не удосужился очистить программу.)

1 Ответ

2 голосов
/ 08 марта 2011

Ваш пример кода выглядит нормально.

Это похоже на ошибку в способе двойного преобразования ExtremeML. Как вы говорите, это влияет только на отрицательные экспоненциальные отрицательные числа.

В настоящее время я отлаживаю его и создаю дополнительные модульные тесты для этих сценариев, после чего я передам обновленный код в CodePlex и выложу обновление здесь.

Редактировать: эта ошибка была исправлена. Вам нужно будет загрузить и собрать исходный код ExtremeML из CodePlex, так как выпуск среды выполнения в настоящее время не обновлен.

...