【问题标题】:Write from SQL Server CE table to excel file从 SQL Server CE 表写入 excel 文件
【发布时间】:2014-05-28 06:02:25
【问题描述】:

抱歉我的拼写错误,我使用本地数据库创建了 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(); }

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

【问题讨论】:

    标签: c# sql excel sql-server-ce


    【解决方案1】:

    在您的情况下,使用 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 方法执行命令。使用不同的值重复此命令以将许多行插入到您的工作簿中。这种方法比互操作方法快得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      相关资源
      最近更新 更多