Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从SQL Server CE表写入excel文件_C#_Sql_Excel_Sql Server Ce - Fatal编程技术网

C# 从SQL Server CE表写入excel文件

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

对不起,我的拼写错误,我用本地数据库创建了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(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方法执行命令。使用不同的值重复此命令,以将多行插入工作簿。这种方法比互操作方法快得多