C#读取Excel工作薄中指定区域的单元格数据

用C#读取Excel工作薄中指定区域的单元格数据
    使用ADO.NET中的OleDbDataAdapter对象读取Excel文件,默认工作表中的有数据的第一行单元格为字段名称。如果不想将工作薄中有数据的第一行单元格当作数据表字段名,可以用本文中的第二个实例实现。
    建立Connection对象的数据源连接字符串:"Provider=Microsoft.Jet.Oledb.4.0;Data Source=Excel 文件物理路径 + ";Extended Properties=Excel 8.0"; 这两个实例用Excel 2000以上版本制作。

-----------------------------------------------------------------------

实例1   读取Excel工作薄中的全部数据
        读取Excel工作薄1(工作薄名称:Sheet1)中的全部数据,在OleDbDataAdapter对象中的SQL语句应为:"Select 字段列表 From [工作表名$]"。
代码示例:
public void ReadExcel(string sExcelFile)
{
string sConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + sExcelFile + ";Extended Properties=Excel 8.0";
OleDbConnection connection = new OleDbConnection(sConnectionString);

OleDbDataAdapter adp = new OleDbDataAdapter("Select * from [Sheet1$]",connection);
DataSet ds = new DataSet();
adp.Fill(ds,"Book1");

grd_Excel.DataSource = ds.Tables["Book1"].DefaultView;
grd_Excel.DataBind();
}


-----------------------------------------------------------------------

实例2   读取Excel工作薄选定区域中的数据
        首先在工作簿中,左键拖拽选取要定义成为表的区域,从菜单中选择‘插入’->‘名称’->‘定义’,在‘定义名称’对话框出现中键入表的名字:“TestTable”,OK。
        那么SQL语句应为:SELECT * FROM TestTable。

代码示例:
public void ReadExcel(string sExcelFile)
{
string sConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + sExcelFile + ";Extended Properties=Excel 8.0";
OleDbConnection connection = new OleDbConnection(sConnectionString);

OleDbDataAdapter adp = new OleDbDataAdapter("SELECT * FROM TestTable", connection);
DataSet ds = new DataSet();
adp.Fill(ds,"Book1");

grd_Excel.DataSource = ds.Tables["Book1"].DefaultView;
grd_Excel.DataBind();
}
posted @ 2009-01-24 14:27  Magicam  阅读(3224)  评论(0编辑  收藏  举报