Я возился с этим пару часов, и я хожу по кругу. Я что-то упускаю.
Я пытаюсь прочитать лист Excel с Linq to Excel. Все работает по порядку, кроме десятичных знаков в листе. Я пробовал несколько разных подходов, ни один из которых не работает.
Столбец, который я пытаюсь прочитать, является столбцом валюты. Моя модель десятичная. Когда я покидаю столбец в формате Excel в формате Currency, я получаю 0 из запроса linq.
Когда я устанавливаю столбец в число, я получаю значения без десятичного разделителя.
Созданный мной тестовый файл имеет лист DecimalSheet. Столбец называется DecimalTest и содержит число; 4587,61
У меня есть такая тестовая модель;
public class DecimalModel
{
[ExcelColumn("DecimalTest")]
public decimal DecimalTest { get; set; }
}
Запрос файла реализован так:
var testFile = new ExcelQueryFactory(fileLocation)
{
DatabaseEngine = LinqToExcel.Domain.DatabaseEngine.Ace,
TrimSpaces = LinqToExcel.Query.TrimSpacesType.Both,
UsePersistentConnection = false,
ReadOnly = true
};
var decimalTestModel = from tb in testFile.Worksheet<DecimalModel>("DecimalSheet")
select tb;
var lines = decimalTestModel.ToList();
Показание выглядит следующим образом: 45876100000000000M
РЕДАКТИРОВАТЬ 1
Тем временем я пробовал:
- Чтение значений как
string
. Это подарило мне
научное обозначение значения в ячейке, независимо от того, какого рода
формат я использовал Он читает «458761e + 016» вместо 4587,61.
- Установка полного листа в текстовом формате и обработка его как
string
как указано выше. Он читает «458761e + 016» вместо «4587,61»
- Чтение значений как `Float. Это не имеет значения.
- Я пытался работать с настройками культуры, как при настройке культа на
nl-NL
жестко закодировано в потоке непосредственно перед созданием фабрики и
возвращение к первоначальной культуре после того, как я закончу. Это сделано не
разница.
Я заметил:
- Когда документ Excel остается открытым, показания с указанным выше
Код идеален. Я не хочу, чтобы Excel оставался открытым из-за партии
обработка документов Excel (на сервере, без взаимодействия с пользователем).
- Когда я запускаю вышеуказанный тест-код на другом сервере (голландская Windows,
Dutch Excel, Dutch Locale
nl-NL
) работает нормально. Это на
Английский сервер 'en-US', который не работает. Заставляет меня думать
это как-то связано с локализацией или культурой?
Может ли кто-нибудь указать мне правильное направление, как я могу настроить Excel / изменить код так, чтобы он читал правильное десятичное число?