C#OLEDB Excel Reader对象到数组
我有一个具有70k行的Excel,我将对数据进行一些计算。
我编写了此代码以将Excel值获取到var对象中,哪种类型为{double}。我想将其拆开成一个数组来使用值,或者是否还有其他解决方案可以使用它。
private string FileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Master.xlsx");
public string ConnectionString(string FileName, string Header)
{
OleDbConnectionStringBuilder Builder = new OleDbConnectionStringBuilder();
if (System.IO.Path.GetExtension(FileName).ToUpper() == ".XLS")
{
Builder.Provider = "Microsoft.Jet.OLEDB.4.0";
Builder.Add("Extended Properties", string.Format("Excel 8.0;IMEX=1;HDR={0};", Header));
}
else
{
Builder.Provider = "Microsoft.ACE.OLEDB.12.0";
Builder.Add("Extended Properties", string.Format("Excel 12.0;IMEX=1;HDR={0};", Header));
}
Builder.DataSource = FileName;
return Builder.ConnectionString;
}
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
using (OleDbConnection con = new OleDbConnection { ConnectionString = ConnectionString(FileName, "Yes") })
{
con.Open();
using (OleDbCommand cmd = new OleDbCommand { CommandText = "SELECT * FROM [INJECTION Data$]", Connection = con })
{
OleDbDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
var rowDataArray = dt.Rows.Cast<DataRow>().Select(x => new[] { x[0] });
}
}
}
I have an excel which has 70k rows and I will do some calculations with data.
I wrote this code to get excel values into var object which type is {double}. I want to unbox it into an array to work with values or are there any other solutions to work with it.
private string FileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Master.xlsx");
public string ConnectionString(string FileName, string Header)
{
OleDbConnectionStringBuilder Builder = new OleDbConnectionStringBuilder();
if (System.IO.Path.GetExtension(FileName).ToUpper() == ".XLS")
{
Builder.Provider = "Microsoft.Jet.OLEDB.4.0";
Builder.Add("Extended Properties", string.Format("Excel 8.0;IMEX=1;HDR={0};", Header));
}
else
{
Builder.Provider = "Microsoft.ACE.OLEDB.12.0";
Builder.Add("Extended Properties", string.Format("Excel 12.0;IMEX=1;HDR={0};", Header));
}
Builder.DataSource = FileName;
return Builder.ConnectionString;
}
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
using (OleDbConnection con = new OleDbConnection { ConnectionString = ConnectionString(FileName, "Yes") })
{
con.Open();
using (OleDbCommand cmd = new OleDbCommand { CommandText = "SELECT * FROM [INJECTION Data$]", Connection = con })
{
OleDbDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
var rowDataArray = dt.Rows.Cast<DataRow>().Select(x => new[] { x[0] });
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
感谢@jdweng
Thanks to @jdweng