Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Запись из dataGridView в файл екселя

Ответить
Настройки темы
C/C++ - Запись из dataGridView в файл екселя

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Lawrence
Дата: 28-02-2012
Описание: Дополнение темы
Добрый день. Недавно начал учить C#, вот решил написать простенький телефонный справочник.
Все шло гладко, пока дело не дошло до сохранения в файл.

1) В чем собственно проблема:
При нажатии на кнопку, которая должна была записать все в файл 1.xls, выскакивает сообщение:
"Не совпадает число значений запроса и число результирующих полей."
И выделяет строку "cmd.ExecuteNonQuery();"

2) Еще раз через раз выскакивает ошибка, что якобы "Процесс не может получить доступ к файлу "1.xls", так как этот файл используется другим процессом."

Сам код:
Код: Выделить весь код
private void button5_Click(object sender, EventArgs e)          
{
string fileName = "1.xls"; // путь файла              
System.IO.File.Copy("1.xls", fileName, true); // копируем файл, шаблон файла должен лежать рядом с *.exe (1.xls)               
string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + fileName + "';Extended Properties=Excel 8.0;"; // строка подключения              
using (OleDbConnection ole = new OleDbConnection(connectionString)) // используем OleDb              
{                  
try                  
{                      
ole.Open();                      
for (int i = 0; i < dataGridView1.Rows.Count; i++)                      
{  
var cmd = new OleDbCommand("INSERT INTO [Лист1$] VALUES ('" + dataGridView1.Rows[0].Cells[0].Value + "','" + dataGridView1.Rows[0].Cells[1].Value + "','" + dataGridView1.Rows[0].Cells[2].Value + "',' ')", ole);                          
cmd.Connection = ole;                          
cmd.ExecuteNonQuery(); // вставляем данные в лист1 файла - filename                          
cmd.Dispose();                      
}                  
}                
  finally              
{                      
ole.Close();                 
}              
}
Мой dataGridView1 имеет в себе 3 колонки.
Строка для начала пока одна. Когда разберусь с сохранением одной строки, то тогда додумаю уже как записать и остальные.


3) Если не трудно, то подскажите, как мне из этого же файла заполнить dataGridView (обратная операция до вышеописанной).

Отправлено: 19:41, 28-02-2012

 

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Поверить не могу, что заработало)
Осталось только понять как сделать так, чтобы файл сохранялся, а не открывался.
И заполнение datagridview`a данными из этого файла)

Спасибо большое.

Отправлено: 00:29, 29-02-2012 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


вот пример, заполняет datagridview данными из этого файла

Код: Выделить весь код
private void button1_Click(object sender, EventArgs e)
        {
            string str;
            int r;
            int c;
            string filename = "1.xls";

            Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel._Workbook ExcelWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet ExcelWorkSheet;
            Microsoft.Office.Interop.Excel.Range ExcelRange;

            ExcelWorkBook = ExcelApp.Workbooks.Open(filename);
            ExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1);

            ExcelRange = ExcelWorkSheet.UsedRange;
            for (r = 1; r <= ExcelRange.Rows.Count; r++)
            {
                dataGridView1.Rows.Add(1);
                for (c = 1; c <= 2; c++)
                {
                    str = Convert.ToString((ExcelRange.Cells[r, c] as Microsoft.Office.Interop.Excel.Range).Value2);
                    dataGridView1.Rows[r - 1].Cells[c - 1].Value = str;
                }
            }
            ExcelWorkBook.Close();
            ExcelApp.Quit();

            releaseObject(ExcelWorkSheet);
            releaseObject(ExcelWorkBook);
            releaseObject(ExcelApp);
        }

        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Unable to release the object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:51, 29-02-2012 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Запись из dataGridView в файл екселя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Определение IP и запись в файл aggressor_ Программирование и базы данных 53 19-02-2019 20:25
Assm - [решено] Запись в файл pogo Программирование и базы данных 7 24-11-2010 09:15
C/C++ - [решено] запись в файл Viruss Программирование и базы данных 3 05-08-2010 18:27
запись в файл на Perl koresaram Вебмастеру 3 16-03-2006 13:46
файл екселя на удаленном w2kServer fima Хочу все знать 3 21-01-2004 20:23




 
Переход