说说c#如何读取excel。
网上看了看,似乎有两种主流办法:
- 用OleDB,这种做法很通用,读取别的数据源也可以通过这个
- 引用com组件:Microsoft.Office.Interop.Excel.dll——这个东西就是完完整整的一个excel功能集合了,应该说用来控制excel文件是很好的,但是我这里只需要把里面的数据读出来,所以这个方法有点太全面
那下面就说说OleDB怎么做了,上代码
类开头引用
using System.Data.OleDb;
using System.Data;
public string getInfo()
{
string s = "";
OleDbConnection OleConn;
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.FilePath + ";Extended Properties='Excel 8.0;HDR=True;IMEX=0'";
OleConn = new OleDbConnection(strConn);
try
{
OleConn.Open();
DataTable table = OleConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
String sql = "SELECT top 1 * FROM [" + table.Rows[0]["Table_Name"].ToString() + "]";//通过i值获取不同表明
DataTable dt = new DataTable();
new OleDbDataAdapter(sql, OleConn).Fill(dt);//填充表,下面就可以通过dt获得表中的内容了
OleConn.Close();
DataRow dr = dt.Rows[0];
s = sql + "\n";
s += dt.Columns.Count.ToString() + "\n";//列的数量
s += dt.Columns[0].Caption;//表头
s += dr[0].ToString();//要获得具体记录的某个属性时,还需要一个DataRow实例
}
catch (Exception err)
{
OleConn.Close();
s = "qqqqqqqqqqqqqq";
}
return s;
}
可以说try块前面那几个变量是必备的,除了那个用来做返回值的s。。。
这里还要简单列举一些excel中使用的sql函数
- count() :要统计记录数的话参数是“”,注意后面要为其标属性名,如 count() as col1 否则会出现expr1000的结果
- top n *:完整获取前n条记录
好了,代码越精悍越好,这些功能就足够继续下去了