从SQL Server检索varbinary数据作为Excel DataTable

时间:2013-06-06 07:08:44

标签: c# asp.net excel sql-server-2012

在我们的应用程序中,我们使用 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

1 个答案:

答案 0 :(得分:0)

您发布的代码不会将Excel文件保存到表中,而是将excel文件的内容保存到表中。这些都不一样。

为了将实际的Excel文件保存到表行的varbinary成员中,请将文件从磁盘读入字节数组,然后将字节数组存储到varbinary中。对于Web应用程序,使用文件上载控件将用户希望存储的文件检索到Web服务器上的临时文件存储区域。从那里将文件加载到数据库。

要重新构建文件,请将varbinary数据检索到字节数组中,然后将字节数组写入磁盘文件。当然,文件必须正确命名。对于Web应用程序,在Web服务器上的本地临时位置重新构建文件,然后发送到客户端的浏览器。他们会看到一个“保存文件”对话框,它允许他们在本地机器上保存文件。