在我们的应用程序中,我们使用 varBinary 数据类型将用户上传的 Excel 文件保存到数据库中。但是,我们还想检索回数据并能够解析它以获取数据(列,行)。
我已经知道如何将 Excel 文件读入 DataTable 以从中获取数据(如下面的代码),但我不知道如何如果 DataSource 的类型为 varbinary ,请执行此操作。
// Getting data from actual Excel File
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds);
foreach (DataTable dt in ds.Tables) {
Response.Write(dt.TableName);
int i= 0;
foreach (DataRow dr in dt.Rows)
{
if (i < 2) { i++; continue; }
foreach (DataColumn dc in dt.Columns)
{
Response.Write(dc.ToString() + ": " + dr[dc.ToString()] + "<br />");
}
i++;
}
}
是否可以使用 SqlServer 2012 和 .NET 4 ?如果是,怎么样?
非常感谢任何反馈。
此致 artsylar
答案 0 :(得分:0)
您发布的代码不会将Excel文件保存到表中,而是将excel文件的内容保存到表中。这些都不一样。
为了将实际的Excel文件保存到表行的varbinary成员中,请将文件从磁盘读入字节数组,然后将字节数组存储到varbinary中。对于Web应用程序,使用文件上载控件将用户希望存储的文件检索到Web服务器上的临时文件存储区域。从那里将文件加载到数据库。
要重新构建文件,请将varbinary数据检索到字节数组中,然后将字节数组写入磁盘文件。当然,文件必须正确命名。对于Web应用程序,在Web服务器上的本地临时位置重新构建文件,然后发送到客户端的浏览器。他们会看到一个“保存文件”对话框,它允许他们在本地机器上保存文件。