我有一个问题,希望对您来说很简单。(Windows窗体应用程序,C#,Framework 3.5,SQL Server 2008 R2)
我不知道如何通过OleDB打开Excel(以byte []类型加载)。
所以,我做了什么:我已经通过表格上传了Excel(.xls(x))文件,并将其保存为varbinary(max)在数据库中。现在,我需要通过oleDB读取该Excel文件。我已经设法从数据库加载该文件并将其保存到byte []变量中。如何在oleDB中打开byte []?当我第一次上传文件时(在将其保存到数据库之前),我已经通过OleDB打开了文件路径。当Excel的数据已经作为byte []存储在内存中时,我该如何访问?
如果要使用 OleDB 读取,则必须将字节写入磁盘。例如,您可以这样做:
var filename = System.IO.Path.GetTempFileName();
// Assuming that fileBytes is a byte[] containing what you read from your database
System.IO.File.WriteAllBytes(filename, fileBytes);
var connection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
// Do your work on excel
using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connection))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT * FROM [Sheet1$]";
using (var rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
System.Diagnostics.Debug.WriteLine(rdr["ColumnName"]);
}
}
}
conn.Close();
}
//Cleanup
System.IO.File.Delete(filename);
Run Code Online (Sandbox Code Playgroud)
如果您不想将文件写入磁盘,您可以考虑使用可以从内存流读取 Excel 文件的第三方库。SpreadsheetGear 或 Aspose 等工具是可以实现此目的的商业工具。
我不知道您使用哪个库来处理 Excel 数据,但首先想到的是它几乎肯定有一个LoadFromFile方法。它可能不这么叫,但这就是它的作用。查看它是否也有LoadFromStream方法,如果有,则获取byte[]数据并将其加载到 中MemoryStream,然后从那里加载 XLS。
| 归档时间: |
|
| 查看次数: |
3918 次 |
| 最近记录: |