我需要以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();
但是这总是首先创建我不想要的文件。 请告知是否有人处理过类似的要求。感谢。
答案 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)