把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);