生成/打开Excel文件而不保存

时间:2013-07-09 05:27:04

标签: c# ado office-interop

我需要以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();

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

2 个答案:

答案 0 :(得分:1)

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

其次,您要创建电子表格并打开它,而不创建文件,这意味着您还必须创建 ALL 功能来打开,解析,格式化和显示电子表格(基本上重新创建Excel!)...因为Excel无法为您执行此操作。

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

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

我会看一下ClosedXML库,它真正简化了使用OpenXML来创建xlsx电子表格。

答案 1 :(得分:0)

也许这篇Microsoft文章会有所帮助:How to: Open a spreadsheet document from a stream (Open XML SDK)