Dan*_*ars 7 c# windows excel oledbconnection stream
这里有一个类似的问题在Memory OleDbConnection到Excel文件中,但这个问题是通过另一种方式完全避免它来回答的.
下面是一些使用OleDbConnection
从磁盘访问Excel文件的示例代码:
static void Main(string[] args)
{
String filePathToExcelFile = "c:\\excelfile.xls";
Boolean hasHeaders = true;
String connectionString = String.Format(
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};" +
"Extended Properties=\"Excel 12.0;HDR={1};IMEX=2\"",
filePathToExcelFile, hasHeaders ? "Yes" : "No");
using(OleDbConnection conn = new OleDbConnection(connectionString))
using (OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]",
conn))
{
conn.Open();
OleDbDataReader datareader = command.ExecuteReader();
while(datareader.Read())
{
Object[] values = new object[datareader.FieldCount];
datareader.GetValues(values);
Console.WriteLine(String.Join(",", values));
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想从System.IO.Stream
磁盘上的非查找文件而不是永久文件中提取Excel文件.
问题分为两部分,a)我可以将OleDbConnection"指向"System.IO.Stream吗?b)如果可以,那么只能是前向流而不是可寻找流?
仅供参考:如果要运行此代码段,则需要安装Microsoft Access数据库引擎2010可再发行组件.如果你安装64位,你需要将项目定位为x64,反之亦然.
检查一下是否有帮助: http: //epplus.codeplex.com/
还有示例代码:
string fileName = System.Windows.Forms.Application.StartupPath + "\\Resources\\SUPPLIERDECISIONKEYLIST.xlsx";
using (var pck = new OfficeOpenXml.ExcelPackage())
{
using (var stream = File.OpenRead(fileName))
{
pck.Load(stream);
}
var ws = pck.Workbook.Worksheets[SheetNo];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7026 次 |
最近记录: |