none
проблема с программной вставкой массива чисел из С#2013 в эксель 2013 русскоязычная версия RRS feed

  • Вопрос

  • Здравствуйте, проблема с программной вставкой массива чисел из С#2013 в эксель 2013 русскоязычная версия. При вставке числа эксель не санкционировано убирает из числа запятую. Например число 987,50637379 превращается в 9 875 063 737 900,000. Использую функцию m_objRange.set_Value(параметр, параметр);

    Жёсткое приведение к типу Double, а так же изменение региональных настроек ни к чему не привели.

    Помогите пожалуйста

    19 января 2018 г. 7:58

Ответы

  • кажется я понял в чём моя проблема. запутался с типами данных.
    Когда создаю datatable, все поля по умолчанию string(типа varchar нет).
    Даже если ради примера делаю так
    dt.Rows[0][0] = Convert.ToDouble(dGV[0, 0].Value);
    всё равно тип string и когда потом вставляю в эксель через object
    obj[0] = dt.Rows[0][0];
    эксель начинает чудить
    если задавать в таблице жёстко тип поля Double, то пропадает текст.

    Тогда следующий вопрос, а можно без цикла получить массив значений Value типа object из DataGridView
    22 января 2018 г. 7:06

Все ответы

  • Покажите код.

    This posting is provided "AS IS" with no warranties, and confers no rights.

    19 января 2018 г. 17:22
    Модератор
  • кажется я понял в чём моя проблема. запутался с типами данных.
    Когда создаю datatable, все поля по умолчанию string(типа varchar нет).
    Даже если ради примера делаю так
    dt.Rows[0][0] = Convert.ToDouble(dGV[0, 0].Value);
    всё равно тип string и когда потом вставляю в эксель через object
    obj[0] = dt.Rows[0][0];
    эксель начинает чудить
    если задавать в таблице жёстко тип поля Double, то пропадает текст.

    Тогда следующий вопрос, а можно без цикла получить массив значений Value типа object из DataGridView
    22 января 2018 г. 7:06
  • Добрый день.

    Не очень понятно, что значит без цикла?

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

    P.s. Лучше один топик, один вопрос. Так потом по форуму искать проще. 

    25 января 2018 г. 5:54
    Отвечающий