Запись из таблицы SQL Server CE в файл Excel

1

Извините за мое правописание, я создаю приложение формы С# с локальной базой данных. Я создал простой код, который работал нормально:

SqlCeConnection conn = new SqlCeConnection("Data Source = 4.sdf");
Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();
Workbook vb = xls.Workbooks.Add(XlSheetType.xlWorksheet);
Worksheet vs = (Worksheet)xls.ActiveSheet;
String t = "SELECT d.[regnr], d.[dalisid],d.[kiekis],d.[kaina] FROM [bilietas] AS b, [dalispard] AS d WHERE b.[regnr]=d.[regnr]";
                    SqlCeCommand cmd = new SqlCeCommand(t, conn);
                    conn.Open();
                    SqlCeDataReader rdr = cmd.ExecuteReader();
                    int i=2;
                    object aa, bb, cc, dd;
                    vs.Cells[1, 1] = "Reg. NR.";
                    vs.Cells[1, 2] = "Dalies ID";
                    vs.Cells[1, 3] = "Kiekis";
                    vs.Cells[1, 4] = "Kaina";
                    try
                    {
                        while (rdr.Read())
                        {
                            aa = rdr.GetValue(0);
                            bb = rdr.GetValue(1);
                            cc = rdr.GetValue(2);
                            dd = rdr.GetValue(3);


                            vs.Cells[i, 1] = aa.ToString();
                            vs.Cells[i, 2] = bb.ToString();
                            vs.Cells[i, 3] = cc.ToString();
                            vs.Cells[i, 4] = dd.ToString();

                            i++;
                        }
                    }


  finally { conn.Close(); rdr.Close(); }
            xls.Visible = true;

он прослушивал и начал писать ячейки emty в файле excel, когда я редактировал кнопку ввода для обновления datagridview, когда вход в таблицу сохраняется путем добавления:

string eilute = "SELECT * FROM bilietas";
            SqlCeCommand cmdd = new SqlCeCommand(eilute, conn);
            conn.Open();
            try
            {
                dt.Load(cmdd.ExecuteReader());
                BindingSource bs = new BindingSource();
                bs.DataSource = dt;
                bilietasDataGridView.DataSource = bs;

                MessageBox.Show("Atlikta", "Atlikta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            finally { conn.Close(); }

Поэтому я действительно не знаю, почему он больше не работает.

Теги:
excel
sql-server-ce

1 ответ

0

Использование Excel interop - не самая лучшая идея в вашем случае - она медленная и требует установки Excel. Попробуйте другой подход - OleDbConnection. Вы можете записать данные на рабочий лист Excel с помощью простой команды SQL INSERT. Создайте объект OleDbConnection со следующей строкой подключения:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=SAMPLE.XLSX;Extended Properties=\"Excel 12.0 XML\";"

После этого создайте новый OleDbCommand с текстом следующим образом:

"insert into [YOR_WORKBOOK_NAME$] ([COLUMN_NAME]) values ('Sample text')"

Выполнить команду с помощью метода ExecuteNonQuery. Повторите эту команду с разными значениями, чтобы вставить много строк в вашу книгу. Этот метод намного быстрее, чем совлокальный подход.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню