DavidMorf Ответов: 1

Экспорт Excel с десятичными форматами


Всем привет,

Я сделал пользовательский datagridview с функцией экспорта Excel и наткнулся на проблему, которую, похоже, не могу исправить.

Я пытаюсь отформатировать столбцы excel в соответствии с их типом данных и предоставить массив Microsoft.Офис.Взаимодействие.объект Excel.
Когда мой столбец сетки имеет любой из числовых типов (double, integer,...), я передаю правильный формат, основанный на моем gridcolumns DefaultCellStyle.Формат.
Он работает вроде бы, но это меняет тип ячейки в Excel на "пользовательский" вместо того, чтобы сохранять ее в виде числа, но с правильным форматом.
Это раздражает, потому что когда в Excel вы нажимаете кнопки "больше/меньше десятичных знаков", это не работает.

Я предполагаю, что то, что я хочу использовать для форматирования числовых столбцов,-это сказать excel, что столбец имеет тип "число", и просто сказать ему, сколько десятичных знаков он должен показывать в зависимости от формата, который я использую в сетке.
Однако я понятия не имею, как это сделать, поскольку, похоже, нет свойства взаимодействия, которое позволило бы мне это сделать.

Что я уже пробовал:

В настоящее время я делаю следующее Перед отправкой моего массива данных в interop:
columnRange.NumberFormatLocal = Me.Columns(i).DefaultCellStyle.Format
Попробовал использовать columnRange.NumberFormat тоже, но имеет тот же эффект.
Это работает визуально, но дает мне проблему, которую я описал выше.

Заранее спасибо за любые советы или помощь :)

1 Ответов

Рейтинг:
1

Maciej Los

Проверить это:
Диапазон.Свойство NumberFormat (Excel) | Microsoft Docs[^]
а это:
MS Excel: Как использовать функцию форматирования с числами (VBA)[^]

Для десятичных чисел с 2 знаками после точки:

columnRange.NumberFormat = "#,##0.00"
'keeps format:
'  .803  =>  0.80
' 1.224  =>  1.22
'55.556 => 55.56


Для целых чисел вы можете использовать "General"
columnRange.NumberFormat = "General"