从SQL Server CE表写入excel文件

本文关键字:excel 文件 SQL Server CE | 更新日期: 2023-09-27 18:05:24

抱歉我的拼写,我创建了c#表单应用程序与本地数据库。我创建了运行良好的简单代码:

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;

它的bug和开始写空单元格在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(); }

所以我真的不知道为什么它不再工作了

从SQL Server CE表写入excel文件

使用Excel互操作在你的情况下不是最好的主意-它很慢,需要安装Excel。尝试其他方法- OleDbConnection方式。您可以使用普通SQL INSERT命令将数据写入Excel工作表。使用以下连接字符串创建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方法执行命令。使用不同的值重复此命令以向工作簿插入多行。此方法比互操作方法快得多。