這是一個最簡單的打開Excel 讀取程序,。
private void button1_Click(object sender, EventArgs e)
{
//首先是給出文件名
string fileName = "A.xlsx";
//string fileName = "B.xls";
//第二步,設(shè)定鏈接字符串
string connectString = GetConnectionString(fileName);
//第三步,,建立連接
OleDbConnection conn = new OleDbConnection(connectString);
//第四步,打開鏈接
conn.Open();
//第五步,,設(shè)定Select命令,,這里表的名字是Sheet1,,就是在Excel中下方的Tab名字,。在加上一個$符號。
string cmdText = "select * from [Sheet1$]";
OleDbCommand comm = new OleDbCommand(cmdText, conn);
//第六步,,構(gòu)建DataAdapter
OleDbDataAdapter da = new OleDbDataAdapter(comm);
//第七步,,填充數(shù)據(jù)
DataSet allData = new DataSet();
da.Fill(allData);
//第八步,結(jié)束
conn.Close();
//讀出的數(shù)據(jù)就是一個二維的表,,和表單里頭呈現(xiàn)的一樣,。按照行列來讀,不需要考慮其他因素
//可以修改,,插入數(shù)據(jù),,但是不可以刪除。這些可以通過設(shè)定DataAdapter的Command來實現(xiàn),。插入修改后會保留原有格式,。
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格式,。如果需要更多的字符串,,可以訪問這個網(wǎng)站找答案。Privider就是OLEDB的提供者,,這個很常見,。DataSource就是文件名,
ExtendedProperties:
一個選項是Excel的版本號,,
一個選項是HDR=YES/No; 就是第一行是不是數(shù)據(jù)的列名,,如果是就自動用這個做Table的列名。如果不是就用A1,,A2,,F(xiàn)3這些名字。
一個選項是IMEX=1 就是說數(shù)據(jù)是不是混排的,,叫Intermixed,。這樣讀取時候直接按Text讀,不自行根據(jù)第一列的數(shù)據(jù)屬性瞎猜,。否則,,如果第一行是數(shù)字,會默認(rèn)以后這一列全是數(shù)字,,如果不是數(shù)字呢,,就給個空值。
http://www./?carrier=excel2007
//如果連接字符串不對,,有可能出現(xiàn)"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;
}