C# 如何将Excel内容导入到Oracle中
我在Oracle中建了一张表,表名叫“MyTable”为了简便起见,数据库名,用户名密码之类的暂且任意,代码中标注下就好,假设数据库中有三个字段,字段名分别为“MyNam...
我在Oracle中建了一张表,表名叫“MyTable”为了简便起见,数据库名,用户名密码之类的暂且任意,代码中标注下就好,假设数据库中有三个字段,字段名分别为“MyName”、“MyAge”和“MyPP”,我的外部Excel(只有sheet1)中也有三列值与之对应,那么如何将Excel中的内容导入到数据库相应字段中呢?跪求代码!分数不是问题。
顺序导入就行了,不用进行字段配比 展开
顺序导入就行了,不用进行字段配比 展开
2个回答
展开全部
楼主的问题 需要分3步
1、获取EXCL表
2、逻辑
3、存入数据库
1) 获取excl
/// <summary>
/// 读取Excel文件,将内容存储在DataSet中
/// </summary>
/// <param name="opnFileName">带路径的Excel文件名</param>
/// <returns>DataSet</returns>
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<dt.Columns.Count-1;i++)
{
s+=dt.Rows[0][i]+","
}
删掉s最后一个逗号
s.Remove(s.Length - 1);
3)写入数据库
循环获取数据
方法和上面一样
for(int j=1;j<dt.Rows.Count-2;j++) //-2是因为第一行为表头
{
string v="";
for(int i=0;i<dt.Columns.Count-1;i++)
{
v+=dt.Rows[j][i]+","
}
v.Remove(v.Length - 1);
//写入数据库 其他数据库连接我就不写了吧 直接SQL语句
INSERT INTO[表名](s) VALUES(v);
}
中间可能有语法错误,但是流程就是这样了
我也是新手
可能代码有点冗余
1、获取EXCL表
2、逻辑
3、存入数据库
1) 获取excl
/// <summary>
/// 读取Excel文件,将内容存储在DataSet中
/// </summary>
/// <param name="opnFileName">带路径的Excel文件名</param>
/// <returns>DataSet</returns>
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<dt.Columns.Count-1;i++)
{
s+=dt.Rows[0][i]+","
}
删掉s最后一个逗号
s.Remove(s.Length - 1);
3)写入数据库
循环获取数据
方法和上面一样
for(int j=1;j<dt.Rows.Count-2;j++) //-2是因为第一行为表头
{
string v="";
for(int i=0;i<dt.Columns.Count-1;i++)
{
v+=dt.Rows[j][i]+","
}
v.Remove(v.Length - 1);
//写入数据库 其他数据库连接我就不写了吧 直接SQL语句
INSERT INTO[表名](s) VALUES(v);
}
中间可能有语法错误,但是流程就是这样了
我也是新手
可能代码有点冗余
展开全部
我以前做过excl报表的处理,要把你的要求写出程序来,要写太多东西了!给你个思路吧
下面这个地址在网上找的,看一下,大概就是这样儿搞~细细看完!里面包含代码!
下面这个地址在网上找的,看一下,大概就是这样儿搞~细细看完!里面包含代码!
参考资料: http://wenku.baidu.com/view/9ca8c0aedd3383c4bb4cd2cf.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询