0

我需要生成 Excel 格式的输出报告,并在处理完成后在屏幕上打开它。但在这种情况下,它不应将报告保存在驱动器上的任何位置,而只能在屏幕上打开。

我尝试使用 OLEDB 使用 ADO,但它总是在向其写入任何内容之前生成文件。这是我到目前为止所尝试的。

            using (OleDbConnection con = new OleDbConnection(connString))
            {
                try
                {
                    con.Open();
                }
                catch (InvalidOperationException invalidEx)
                {
                   //Exception handling
                }
                // Create table for excel structure
                StringBuilder strSQL = new StringBuilder();
                strSQL.Append("CREATE TABLE [" + tableName + "]([TITLE] text,[SURNAME] text,[STATUS] text)");

                // Define file columns
                StringBuilder strfield = new StringBuilder();
                strfield.Append("[TITLE],[SURNAME],[STATUS]");

                OleDbCommand cmd = new OleDbCommand(strSQL.ToString(), con);
                cmd.ExecuteNonQuery(); // This creates the table

 //Actual row for creating and insering row - logic not shown completely
cmd.CommandText = strSQL.Append(" insert into [" + tableName  + "]( ")
                        .Append(strfield.ToString())
                        .Append(") values (").Append(strvalue).Append(")").ToString();
                    success = cmd.ExecuteNonQuery();

但这总是首先创建我不想要的文件。请告知是否有人处理过类似的要求。谢谢。

4

2 回答 2

1

好的,首先使用 ADO(一种数据库访问技术)尝试创建电子表格很奇怪,可能可行,但绝对不容易。

其次,您是说创建一个电子表格并打开它,而不创建文件,这意味着您还必须创建所有功能来打开、解析、格式化和显示电子表格(基本上是重新创建 Excel!)...作为 Excel不能为你做这件事。

所以我会质疑“以 Excel 格式生成输出报告”的要求,这真的意味着“在网格中显示”吗?还是“在允许格式化、总计的网格中显示?”

如果确实需要 Excel 格式,那么我唯一可以建议的是您必须创建一个临时 Excel 文件,然后在显示后将其删除。

我会看看真正简化了使用 OpenXML 创建 xlsx 电子表格的ClosedXML库。

于 2013-07-11T09:24:49.200 回答
0

也许这篇 Microsoft 文章会有所帮助: 如何:从流中打开电子表格文档 (Open XML SDK)

于 2013-07-09T06:17:44.963 回答