.NET中从Excel中读取出了数据,但是要怎么把它保存到数据库中去啊~ 额 有点小白,高手指教。。

而且要把下面那个路径不写死,怎么传参。。protectedvoidButton1_Click(objectsender,EventArgse){//stringstrpa... 而且要把下面那个路径不写死,怎么传参。。
protected void Button1_Click(object sender, EventArgs e)
{
// string strpath = FileUpload1.PostedFile.FileName.ToString(); //获取Execle文件路径
// string filename = FileUpload1.FileName;
//dt = ExcelToDataTable(@filename,"Sheet1");
dt = ExcelToDataTable(@"D:\book.xls","Sheet1");
labCount.Text = dt.Rows.Count.ToString();
labInfo.Text = dt.Rows[0][0].ToString() + " " + dt.Rows[0][1].ToString() + " " + dt.Rows[0][2].ToString();
for (int i = 0; i < dt.Rows.Count;i++ )
{
if(!dt.Rows[i][0].ToString().Equals(""))
{
Excel excel = new Excel();
excel.name = dt.Rows[i][0].ToString();
excel.nums = dt.Rows[i][1].ToString();
excel.qq = dt.Rows[i][2].ToString();
lablist.Text = lablist.Text + "<br/>" + dt.Rows[i][0].ToString() + dt.Rows[i][1].ToString()+dt.Rows[i][2];

}
}
}

public DataTable ExcelToDataTable(string strExcelFileName,string strSheetName)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties=Excel 5.0;";
string strExcel = string.Format("select * from [{0}$]",strSheetName);
DataSet ds = new DataSet();
using(OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel,strConn);
adapter.Fill(ds,strSheetName);
conn.Close();
}
return ds.Tables[strSheetName];
}
展开
 我来答
手机用户33392
2011-10-12 · 超过14用户采纳过TA的回答
知道答主
回答量:156
采纳率:0%
帮助的人:62万
展开全部
你可以看 一下下面的参考资料:
gmfjcilrbh45450415622011-10-12 21:26:29 给你段代码参考: //将查询出的数据导出成Excel文件 procedure TForm1.N1Click(Sender: TObject); var MSExcel:Variant; i,n:Integer; begin SaveDialog1.Filter:='*.xls|*.xls'; SaveDialog1.DefaultExt:='XLS'; if SaveDialog1.Execute then begin MSExcel:=CreateOLEObject('Excel.Application'); MSExcel.WorkBooks.Add; MSExcel.Visible:=False; form1.ADOQuery1.Open; n:=form1.ADOQuery1.RecordCount; form1.ADOQuery1.First; MSExcel.Cells[1,1].NumberFormat:='@'; MSExcel.Cells[1,1].Value:='编号'; MSExcel.Cells[1,2].Value:='歌曲名'; MSExcel.Cells[1,3].Value:='演唱者'; MSExcel.Cells[1,4].Value:='类型代码'; MSExcel.Cells[1,5].Value:='使用时间'; MSExcel.Cells[1,6].Value:='备注'; for i:=2 to n do begin MSExcel.Cells[i,1].NumberFormat:='@'; MSExcel.Cells[i,1].Value:=ADOQuery1.FieldByName('SongID').AsString; MSExcel.Cells[i,2].Value:=ADOQuery1.FieldByName('SongName').AsString; MSExcel.Cells[i,3].Value:=ADOQuery1.FieldByName('Singer').AsString; MSExcel.Cells[i,4].Value:=ADOQuery1.FieldByName('ClassID').AsString; MSExcel.Cells[i,5].Value:=ADOQuery1.FieldByName('UseTimes').AsString; MSExcel.Cells[i,6].Value:=ADOQuery1.FieldByName('Note').AsString; form1.ADOQuery1.Next; end; MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName); MSExcel.ActiveWorkBook.Saved:=True; MSExcel.Quit; end; //messagebox(0,'数据已成功导出!','系统提示!',MB_OK+MB_ICONINFORMATION); end;
追问
- -   你这是导出Excel我的是从Excel导入数据库啊。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a7339fa40
2011-10-13 · TA获得超过704个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:251万
展开全部
首先问你想存入数据库的是你从EXCEL,也就是ExcelToDataTable()方法返回的数据么???
更多追问追答
追问
是的。。 求详细点的代码。。
追答
EXCEL数据多么?不多的话,就直接循环插入对应的表就行了。如:
DataTable dt= ExcelToDataTable(@"D:\book.xls","Sheet1");
string strConn = "数据库地址";
OleDbConnection conn = new OleDbConnection(strConn);
try
{
conn.Open();
for(int i=0;i<dt.Rows.Count;i++)
{
string sql=@"insert into 你的表名 (字段1,字段2,....) values (dt.Rows[i][0].ToString(),dt.Rows[i][1].ToString().......)";
OleDbCommand cmd= new OleDbCommand(sql, conn);
cmd.ExecuteNonQuery();

}
}
catch
{

}
finally
{
conn.Dispose();
}
这样就行了,如果数据多的话就用事务
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liulaijin
2011-10-13 · 超过22用户采纳过TA的回答
知道答主
回答量:58
采纳率:100%
帮助的人:54.5万
展开全部
循环插入到数据库中:
foreach(DataRow row in ds.Table[0].Rows)
{
//取DataSet中的数据插入到数据库中
insert into 表名 values(.........)

}
追问
额,能不能具体点。。谢谢了
追答
OpenFileDialog flg = new OpenFileDialog();
flg.Filter = "Excel文件(*.xls)|*.xls";
flg.Title = "导入数据对话框";
int update = 0, insert = 0;
if (flg.ShowDialog() == DialogResult.OK)
{

DataSet ds = MyData.getExcelDataSet(flg.FileName);//获取Excel数据集
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Food food = new Food();
food.FoodName = ds.Tables[0].Rows[i][1].ToString();
food.Protein = Convert.ToDecimal(ds.Tables[0].Rows[i][2].ToString());
food.Fat = Convert.ToDecimal(ds.Tables[0].Rows[i][3].ToString());
food.Sugar = Convert.ToDecimal(ds.Tables[0].Rows[i][4].ToString());
food.Kind = ds.Tables[0].Rows[i][5].ToString();

if (!MyData.ExitFoods(ds.Tables[0].Rows[i][1].ToString(), ds.Tables[0].Rows[i][5].ToString()))
{
insert++;
MyData.AddFoods(food);
}
else
{
update++;
food.FoodName = ds.Tables[0].Rows[i][0].ToString();
MyData.UpdateFoods(food);
}

}
MessageBox.Show("累计导入数据:" + insert.ToString() + "条,更新数据:" + update.ToString() + "条!", "导入完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式