Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12

Скопировать данные из Excel в DataGridView

07.08.2014, 22:28. Показов 2164. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток . не получается скопировать массив в формате ексель в DataGridView, с текстовыми файлами работает.
Пишет: Необработанное исключение типа "System.ArgumentOutOfRangeException" произошло в mscorlib.dll Дополнительные сведения: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.

после компиляции пишет mt.exe : command line error c1010010: -inputresource or -outputresource or -updateresource specified with multiple semicolons.
но при этом компилирует, и файлы открывает. Не могу понять в чем ошибка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
private: System::Void открытьToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
                 openFileDialog1->ShowDialog();
                 if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
    array<String^>^ rows = File::ReadAllLines(openFileDialog1->FileName, System::Text::Encoding::Default);
 
    array<String^>^ columns = rows[0]->Split('^');
    for (int i = 0; i < columns->Length; i++)
    {
        dataGridView1->Columns->Add("Column" + Convert::ToString(i+1), "Column" + Convert::ToString(i+1));                       
    }
 
    dataGridView1->Rows->Add(rows->Length);
 
    array<String^>^ cells;
    for (int j = 0; j < rows->Length; j++)
    {
        cells = rows[j]->Split('^');
        for (int i = 0; i < cells->Length; i++)
        {
            dataGridView1->Rows[j]->Cells[i]->Value = cells[i];                  
        }
    }
}
                             
             
             }
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
            this->Text = "Текстовый редактор";
            openFileDialog1->FileName = "D:\\Docs\\A.red.xls";
            openFileDialog1->Filter = "Текстовые файлы (*.xls)|*.xls|All files (*.*)|*.*";
            
             }
Добавлено через 15 минут
я так поняла что проблема в том что в екселе цикл перебирает все строки, а мне нужно чтобы читали все непустые строки.

Добавлено через 53 минуты
попробовала добавить if(columns(columns->Length->Strings[i]) !="");
но выдает ошибку error C2227: выражение слева от "->Strings" должно указывать на тип класса, структуры или объединения либо на универсальный тип

Добавлено через 7 минут
если пробую без стринг : if(columns(columns->Length) !="");
выдает ошибку error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов
Последний вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private: System::Void открытьToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
                 openFileDialog1->ShowDialog();
                
                 //if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
    array<String^>^ rows = File::ReadAllLines(openFileDialog1->FileName, System::Text::Encoding::Default);
 
    array<String^>^ columns= rows[0]->Split('^');
    
    {
    for (int i = 0; i < columns->Length; i++)
    {
        if(columns(columns->Length) !="");
        
        {
         dataGridView1->Columns->Add("Column" + Convert::ToString(i+1), "Column" + Convert::ToString(i+1));                       
        }
        
    }
    }
    dataGridView1->Rows->Add(rows->Length);
 
    array<String^>^ cells;
    for (int j = 0; j < rows->Length; j++)
    {
        cells = rows[j]->Split('^');
        for (int i = 0; i < cells->Length; i++)
        {
            dataGridView1->Rows[j]->Cells[i]->Value = cells[i];                  
        }
    }
}
                             
             
             }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.08.2014, 22:28
Ответы с готовыми решениями:

Скопировать данные из datagridview в datatable
Я создал колонки в гриде, вручную добавил строки туда же. dataGridView1.Rows.Add(...) Теперь хочу привязать данные из datagridview...

Как скопировать выделенный столбик из Excel в DataGridView?
Доброго времени суток, подскажите пожалуйста как можно скопировать выделенный столбик из Excel в dataGridView?

Скопировать данные с одного столбца datagridview в другой
Всем доброго дня! есть 4 столбца datagridview. Как можно скопировать данные с 3 и 4 столбца и вставить из в 1 и 2. При условии: ...

1
Заблокирован
08.08.2014, 03:32
Потому что xls и xlsx это не текстовые файлы.
Если вы их в блокноте откроете, вы там тоже вряд ли увидите то же, что увидите в текстовом файле. И вообще вряд ли что-то путное увидите.
Еще xlsx - это просто xml в zip-архиве, можно распаковать и тогда хоть что-то можно разобрать. А xls как текстовый файл не читается вообще.

Нужна специальная библиотека, и для xlsx лучше конечно тоже.
Есть вот NPOI, и для xlsx, и для xls, и для чтения, и для записи.
Тут пример на VB.NET https://www.cyberforum.ru/post5937468.html
Собираюсь и на C++/CLI такой пример написать, вот сюда (собсна я тот топик и создал, из-под другого аккаунта - меня тут банят все время, за что - сам не знаю).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2014, 03:32
Помогаю со студенческими работами здесь

Как скопировать данные из одного dataGridView в другой?
У меня есть 2 DataGridView объекта. Один заполнен, другой - нет. Мне нужно как-то скопировать данные из одного DataGridView в другой, так...

Скопировать данные из файла Excel в StringGrid
Здравствуйте) Я понимаю, что тема уже заезжанная. Я раньше использовала технологию OLE для загрузки данных. Все работало. Но сейчас...

Как скопировать данные из-под Excel в Word ?
Нужно будудучи в Екселе скопировать данные в Ворд (причём несколько раз). Если можно, то готовый код, пожалуйста.

Excel скопировать данные из таблицы с объединенными ячейками
Есть таблица excel с объединенными ячейками (после экспорта). Нужно скопировать её так, что бы каждая ячейка была простой (не...

Нужно скопировать данные с закрытого листа Excel в открытый
Тут, уже несколдько вариантов постирал... Не могу правильно сформулировать вопрос... Вообщето просто нужно - скопировать данные с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru