Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Resistor
27 / 19 / 14
Регистрация: 17.09.2011
Сообщений: 113
1

Импорт таблицы из MS Excel 2007-2010 в компонент datagridview

14.01.2013, 13:08. Просмотров 3604. Ответов 9
Метки нет (Все метки)

У меня проблема. Есть код импортирующий таблицу (с заголовками) из MS Excel 97-2003 в компонент datagridview:
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
OpenFileDialog opf = new OpenFileDialog();
            opf.Filter = "Файлы Excel (1997-2007)|*.XLSX;*.XLS";
            opf.Title = "Открыть файл отчета по задолженности";
            if (opf.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    string filename = opf.FileName;
                    TableNameStr = "Debts";
                    string ConStr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=Excel 8.0;", filename);
                    System.Data.DataSet ds = new System.Data.DataSet("EXCEL");
                    OleDbConnection cn = new OleDbConnection(ConStr);
                    cn.Open();
                    DataTable schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                    string sheet1 = (string)schemaTable.Rows[0].ItemArray[2];
                    string select = String.Format("SELECT * FROM [{0}]", sheet1);
                    OleDbDataAdapter ad = new OleDbDataAdapter(select, cn);
                    ad.Fill(ds);
                    DataTable tb = ds.Tables[0];
                    cn.Close();
                    dataGridView5.DataSource = tb;
                    CorrectTable(TableNameStr);
                    button12.Enabled = true;
                    button31.Enabled = true;
                }
                catch
                {
                    MessageBox.Show("Ошибка при попытке импорта отчета по задолженности из файла MS Excel."+
                        "\nВозможно внешняя таблица не имеет предполагаемый формат (Excel 8.0).");
                }
}
Как сделать так чтобы этот код импортировал таблицу из MS Excel 2007 (или 2010)? Я пробовал изменять параметр Extended Properties, но у меня ничего не получилось и при выполнении импорта выскакивает сообщение написанное в блоке catch. А без catch пишет "Невозможно найти устанавливаемый ISAM". Помогите пожалуйста!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 13:08
Ответы с готовыми решениями:

Импорт данных из Excel в компонент datagridview
У меня такой вопрос: каким образом можно импортировать данные из Excel в...

Импорт из Excel в dataGridView
Ребят помогите: Нужно, чтоб при нажатие на кнопку в грид копировались данные,...

Импорт данных из excel в DataGridView
Здравствуйте, нужна Ваша помощь. Необходимо организовать импорт данных их Excel...

Импорт таблицы из Word'а в dataGridView
Доброго времени суток. Подскажите как можно открыть\импортировать таблицу из...

Чтение excel файла в Datagridview и импорт в sql сервер
Добрый день. Может есть у кого нибудь готовое решение ? Если нет, я...

9
kodv
1423 / 1097 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
14.01.2013, 15:17 2
А если использовать провайдера не Jet, а ACE? в смысле, попробуйте написать "Provider=Microsoft.ACE.OLEDB.12.0" для EXCEL 2007, и "Provider=Microsoft.ACE.OLEDB.14.0" для EXCEL 2010.
2
Resistor
27 / 19 / 14
Регистрация: 17.09.2011
Сообщений: 113
14.01.2013, 15:57  [ТС] 3
kodv, большое спасибо, помогло!

Добавлено через 14 минут
Еще 1 вопрос: эта операция импорта из Excel 2007 будет работать с MS Office 2007 на Windows 7 на другом компьютере? Или нужно вносить какие-то изменения?.. Например устанавливать пакет драйверов доступа к БД, такой как Access Database Engine от Microsoft.
0
kodv
1423 / 1097 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
14.01.2013, 16:30 4
Resistor, Я думаю, что вместе с офисом все необходимое должно поставиться. Но если вдруг не все поставилось с офисом, вы знаете, что делать)
0
atlaskin
0 / 0 / 1
Регистрация: 09.03.2016
Сообщений: 27
04.04.2016, 17:52 5
Добрый день! А как реализовать тоже самое, что и у Вас, но с документом Excel 2015?
0
wm_leviathan
196 / 198 / 69
Регистрация: 12.01.2011
Сообщений: 699
Завершенные тесты: 2
04.04.2016, 18:13 6
atlaskin, посмотрите в источниках данных odbc там видно какой драйвер стоит.
К примеру у меня office 2007 стоит
Импорт таблицы из MS Excel 2007-2010 в компонент datagridview

из картинке видно что библиотека ACEODBC а версия 12. Значит у меня строка соединения будет вида "Provider=Microsoft.ACE.OLEDB.12.0". Смотрите что у вас стоит.
0
atlaskin
0 / 0 / 1
Регистрация: 09.03.2016
Сообщений: 27
04.04.2016, 18:23 7
wm_leviathan, спасибо, выяснил, что у меня версия 10.0, но библиотека ODBCJT32. Какую команду в таком случае применять? ACE ведь не будет работать?
0
wm_leviathan
196 / 198 / 69
Регистрация: 12.01.2011
Сообщений: 699
Завершенные тесты: 2
04.04.2016, 18:33 8
atlaskin, по моему это не то. Если офис 64 то смотрите в 64 разрядных источниках данных, у меня офис x32
0
atlaskin
0 / 0 / 1
Регистрация: 09.03.2016
Сообщений: 27
04.04.2016, 18:36 9
Вы правы. Не то. Посмотрел ещё раз, версия 16.0.

Изменил строчку:

string ConStr = String.Format("Provider=Microsoft.ACE.OLEDB.16.0; Data Source={0}; Extended Properties=Excel 8.0;", filename);

Всё равно не работает и выдает ошибку, прописанную в этом же коде:

MessageBox.Show("Ошибка при попытке импорта отчета по задолженности из файла MS Excel." +
"\nВозможно внешняя таблица не имеет предполагаемый формат (Excel 8.0).");
0
wm_leviathan
196 / 198 / 69
Регистрация: 12.01.2011
Сообщений: 699
Завершенные тесты: 2
04.04.2016, 19:02 10
Excel 8.0 на 12.0 исправте попробуйте. 16 офиса нету проверить не могу. да и на http://www.connectionstrings.com/excel/ под 16й еще ничего не написали.
0
04.04.2016, 19:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2016, 19:02

Импорт таблицы из Excel в БД C#
Нужна помощь!!! Нужен код программы, который автоматический добавлял бы...

Ошибка при экспорте таблицы DataGridView в Excel
При нажатии на кнопку выскакивает ошибка. подробности на картинке using...

Загрузка изображения из Access 2007-2010 в pictureBox
Подскажите, есть код который подгружает обычные данные (строки, числа) из базы....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru