C# 从SQL Server CE表写入excel文件
对不起,我的拼写错误,我用本地数据库创建了so C表单应用程序。我创建了简单的代码,效果很好:C# 从SQL Server CE表写入excel文件,c#,sql,excel,sql-server-ce,C#,Sql,Excel,Sql Server Ce,对不起,我的拼写错误,我用本地数据库创建了so 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(XlSh
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;
当通过添加以下内容保存表中的输入时,我编辑了用于刷新datagridview的输入按钮,该按钮出现错误并开始在excel文件中写入emty单元格:
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。尝试其他方法-OLEDB连接方式。可以使用纯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')"
使用ExecuteOnQuery方法执行命令。使用不同的值重复此命令,以将多行插入工作簿。这种方法比互操作方法快得多