Jcstone / C#开发 / C#通过OLEDB读取Excel文件

分享

   

C#通过OLEDB读取Excel文件

2012-10-23  Jcstone

C#通过OLEDB读取Excel文件

这是一个最简单的打开Excel 读取程序。

private void button1_Click(object sender, EventArgs e)
{

//首先是给出文件名
string fileName = "A.xlsx";
//string fileName = "B.xls";

//第二步,设定链接字符串
string connectString = GetConnectionString(fileName);

//第三步,建立连接
OleDbConnection conn = new OleDbConnection(connectString);

//第四步,打开链接
conn.Open();

//第五步,设定Select命令,这里表的名字是Sheet1,就是在Excel中下方的Tab名字。在加上一个$符号。
string cmdText = "select * from [Sheet1$]";
OleDbCommand comm = new OleDbCommand(cmdText, conn);

//第六步,构建DataAdapter
OleDbDataAdapter da = new OleDbDataAdapter(comm);

//第七步,填充数据
DataSet allData = new DataSet();
da.Fill(allData);

//第八步,结束
conn.Close();

//读出的数据就是一个二维的表,和表单里头呈现的一样。按照行列来读,不需要考虑其他因素

//可以修改,插入数据,但是不可以删除。这些可以通过设定DataAdapter的Command来实现。插入修改后会保留原有格式。
if (allData.Tables.Count > 0)
{
int rowCount = allData.Tables[0].Rows.Count;
int colCount = allData.Tables[0].Columns.Count;
for (int i = 0; i < colCount; i++)
{
string s1 = allData.Tables[0].Columns[i].ColumnName;

}
for (int i = 0; i < rowCount; i++)
{
for (int j = 0; j < colCount; j++)
{
string s1 = allData.Tables[0].Rows[i][j].ToString();
}
}
}


}

//这是给出了两个连接字符串,一个是xls,第二个是xlsx,就是Excel 2007格式。如果需要更多的字符串,可以访问这个网站找答案。Privider就是OLEDB的提供者,这个很常见。DataSource就是文件名,

ExtendedProperties:

 一个选项是Excel的版本号,

一个选项是HDR=YES/No; 就是第一行是不是数据的列名,如果是就自动用这个做Table的列名。如果不是就用A1,A2,F3这些名字。

一个选项是IMEX=1 就是说数据是不是混排的,叫Intermixed。这样读取时候直接按Text读,不自行根据第一列的数据属性瞎猜。否则,如果第一行是数字,会默认以后这一列全是数字,如果不是数字呢,就给个空值。

//如果连接字符串不对,有可能出现"Could not find installable ISAM ” Exception
private string GetConnectionString(string fileName)
{
//xls文件的连接字符串
/*string connectString =
@" Provider=Microsoft.Jet.OLEDB.4.0;" +
@" Data Source=" + fileName + ";" +
@" Extended Properties=" + Convert.ToChar(34).ToString() +
@" Excel 8.0;" + Convert.ToChar(34).ToString();*/
//xlsx,Excel 2007文件的连接字符串
string connectString =
@" Provider=Microsoft.ACE.OLEDB.12.0;" +
@" Data Source=" + fileName + ";" +
@" Extended Properties=" + Convert.ToChar(34).ToString() +
@" Excel 12.0;" + Convert.ToChar(34).ToString();

return connectString;

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>