从SQL Server CE表写入excel文件

对不起,我的拼写,我用本地数据库创build如此的C#表单应用程序。 我创build了简单的代码工作正常:

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; 

它错误,并开始在excel文件上写入emty单元格时,我编辑inputbutton刷新datagridview时保存input到表中添加:

 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 interop不是最好的主意 – 它很慢,需要安装Excel。 尝试其他方法 – OleDbConnection的方式。 您可以使用普通的SQL INSERT命令将数据写入Excel工作表。 使用以下连接string创buildOleDbConnection对象:

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

之后,用这样的文本创build新的OleDbCommand

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

使用ExecuteNonQuery方法执行命令。 用不同的值重复此命令可将多行插入到工作簿中。 这种方法比interop方法快得多。