日期:2014-05-19  浏览次数:20721 次

把Excel中的数据导入到数据表中地问题
读去Excel中的数据,并放在DataTable中.
using   System;
using   System.Collections.Generic;
using   System.ComponentModel;
using   System.Data;
using   System.Drawing;
using   System.Text;
using   System.Windows.Forms;
using   System.Data   .SqlClient   ;
using   System.Data   .Common   ;

namespace   WindowsApplication2
{
        public   partial   class   Form1   :   Form
        {
                public   Form1()
                {
                        InitializeComponent();
                }
                string   StrConn   =   "Provider=Microsoft.Jet.OLEDB.4.0; "   +   "Data   Source= "   +   FilePath   +   ";Extended   Properties= 'Excel   8.0;HDR=NO ' ";
                SqlConnection   MyConn=new   SqlConnection   (StrConn);
                MyConn.Open();
                string   StrCmd   =   "select   *   from   [Example] ";
                SqlDataAdapter     MyCommand=new   SqlDataAdapter   (StrCmd,MyConn);
                DataSet   Ds   =   new   DataSet();
                MyCommand.Fill(Ds, "Example ");
                DataTable   dt=Ds.Tables[ "Example "];


        }
}
请问,从Excel中获取数据,可以这么写?
FilePath   的路径该怎么写?
我直接在引用加的Microsoft.Office.Tools.Excel.dll
Thks.

------解决方案--------------------
如果你要把excel当成数据源的话就不用引用那个dll了
------解决方案--------------------
Microsoft.Office.Tools.Excel.dll
不要

FilePath是绝对路径
如C:\123.xsl等
------解决方案--------------------
当成数据源后,Excel中的第一行会被当成字段名。如果某一列的值不能成为字段名,则有个默认的名字。好像是叫F1,F2之类的。
------解决方案--------------------
OleDbConnection Conn=null;
try
{
OleDbDataAdapter ad;
//连接到Excel;
string strConn = "Provider=Microsoft.Jet.OleDb.4.0; Data Source= "+FileName+ "; Extended Properties=Excel 8.0; ";
Conn = new OleDbConnection(strConn);
Conn.Open();
if (SheetName.Trim()== " ")
{
//获取Sheet的名字。
DataTable schemaTable = Conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
//schemaTable.Rows.Count值为Sheet的总数
if (SheetIndex> schemaTable.Rows.Count || SheetIndex <1) return null;
//注意schemaTable是从0开始,即第0个是第1个Sheet。第2列是Sheet名。
SheetName=schemaTable.Rows[SheetIndex-1][2].ToString().Trim();
}
else//自动加$号
{
if (SheetName.Substring(SheetName.Length-1,1)!= "$ ")
SheetName+= "$ ";

}

ad = new OleDbDataAdapter( "select * from [ "+SheetName+ "] ", Conn);