日期:2014-05-17  浏览次数:21008 次

WinForm将Excel中的表导入orcale
一个Excel中有多个sheet,每一个sheet存放的是一个表中的数据。
Excel中存放的表有可能是一个或多个表空间的表。
sheet的命名规则是:表名|表空间名。

------解决方案--------------------
private string OpenFileDialogByExcel()
{
//打开一个文件选择框
ofd = new OpenFileDialog();
//打开文本框的标题
ofd.Title = "Excel文件 ";
ofd.FileName = " ";
//指定打开文本框的路径为我的电脑
ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);//为了获取特定的系统文件夹,可以使用System.Environment类的静态方法GetFolderPath()。该方法接受一个Environment.SpecialFolder枚举,其中可以定义要返回路径的哪个系统目录
//打开文件的格式
ofd.Filter = "Excel文件(*.xls)|*.xls ";

ofd.ValidateNames = true; //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名
ofd.CheckFileExists = true; //验证路径有效性
ofd.CheckPathExists = true; //验证文件有效性


strName = string.Empty;
if (ofd.ShowDialog() == DialogResult.OK)
{
strName = ofd.FileName; //获取文件路径
}

if (strName == " ")
{
MessageBox.Show( "没有选择Excel文件!无法进行数据导入 ");
return null;
}

return strName;

}
public void EcxelToAccess(string filePath)
{
bool IsSuccess = false; //判断添加是否成功
//根据路径打开一个Excel文件并将数据填充到DataSet中
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + filePath + ";Extended Properties = 'Excel 8.0;HDR=NO;IMEX=1 ' ";//导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入
string strExcel = " ";
strExcel = "select * from [sheet1$] ";
OleDbDataReader readerExcel = ExecuterReader(strConn, CommandType.Text, strExcel, null);
// dataGridView1.Rows.Clear();
if (readerExcel.HasRows == true)
{
List <string> list = new List <string> ();
if (readerExcel.Read())
{
while (readerExcel.Read())
{
list.Clear(); //循环读取之前就清空list集合的值


UserInfo _userInfo = new UserInfo();
_userInfo.Id = int.Parse(readerExcel[0].ToString());
_userInfo.Expertname = readerExcel[1].ToString();
_userInfo.Contact = readerExcel[2].ToString();
_userInfo._职称 = readerExcel[3].ToString();
_userInfo._工作单位 = readerExcel[4].ToString();
_userInfo._专业 = readerExcel[5].ToString();
IsSuccess = IputToAccess(_userInfo); //添加到数据库中去

string id = _userInfo.Id.ToString(); //获取用户编号
string name = _userInfo.Expertname; //获取用户名
string 联系方式 = _userInfo.Contact; //获取用户密码
string __职称 = _userInfo._职称;
string __工作单位 = _userInfo._工作单位;
string __专业 = _userInfo._专业;
list.AddRange(new string[]
{
id,name,联系方式,__职称,__工作单位,__专业
});
int index = dataGridView2.Rows.Add();
//为datagirdvi