C# 如何将Excel内容导入到Oracle中

2025-04-19 12:37:35
推荐回答(1个)
回答1:

楼主的问题 需要分3步
1、获取EXCL表
2、逻辑
3、存入数据库

1) 获取excl
///


/// 读取Excel文件,将内容存储在DataSet中
///

/// 带路径的Excel文件名
/// DataSet
private DataSet ExcelToDataSet(string opnFileName)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + opnFileName + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
OleDbConnection conn = new OleDbConnection(strConn);
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = new DataSet();

try
{
strExcel = "select * from [sheet1$]";
conn.Open();
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds, "dtSource");
conn.Close();
}
catch
{
MessageBox.Show("源数据出错!");
DataSet d = new DataSet();
return d;
}
return ds;
}
注意:该方法有似乎只支持97-2003格式的excl,还有就是读取不了第一行,这个问题我找过很多地方,都没有找打答案,我的解决方案就是,表头写两行,因为他不读取第一行数据。另外,尽量不要有空格,容易吧空格后面的内容读掉

2)上面的方法返回的是dataset
然后获取他的第一张表 DataTable dt=ExcelToDataSet(opnFileName).Tables[0];
获取表头 使用一个string保存
直接遍历dt的第一行数据
string s="";
for(int i=0;i{
s+=dt.Rows[0][i]+","
}
删掉s最后一个逗号
s.Remove(s.Length - 1);

3)写入数据库

循环获取数据
方法和上面一样
for(int j=1;j{
string v="";
for(int i=0;i {
v+=dt.Rows[j][i]+","
}
v.Remove(v.Length - 1);

//写入数据库 其他数据库连接我就不写了吧 直接SQL语句
INSERT INTO[表名](s) VALUES(v);
}

中间可能有语法错误,但是流程就是这样了
我也是新手
可能代码有点冗余