问题是这样的。我现在用C#在做一个Excel导入到SQL数据库的工具。遇到一些麻烦,求高人指点,跪求啊。
问题开始了:比如我现在我有个Excel的表,里面的数据是一个员工信息。员工信息肯定有性别和员工部门。我在SQL中有相应的字段和数据,可是SQL中的性别和员工部门是通过字典来转换的,比如说,Excel中性别为男的在SQL的字典表里面性别的对应的值是1.女的为2.(再或者员工部门在Excel中的市场部在SQL字典表中对应的部门Id是12),现在需求就是让我们把Excel中性别为男的数据在插入到数据库的时候,男改成1,女改成2。求高手,有木有!!
问题开始了:比如我现在我有个Excel的表,里面的数据是一个员工信息。员工信息肯定有性别和员工部门。我在SQL中有相应的字段和数据,可是SQL中的性别和员工部门是通过字典来转换的,比如说,Excel中性别为男的在SQL的字典表里面性别的对应的值是1.女的为2.(再或者员工部门在Excel中的市场部在SQL字典表中对应的部门Id是12),现在需求就是让我们把Excel中性别为男的数据在插入到数据库的时候,男改成1,女改成2。求高手,有木有!!
解决方案 »
- 关于C#调用XMLRPC库后客户端无法解析服务器返回的中文的问题
- 加粗部分出现“输入字符串的格式不正确。”请哪位高手帮忙改下~~~~~
- PostedFile.SaveAs(strServerDir)之后文件变成0KB的问题.
- [c#控制电脑进程]
- 如何遍历一个文件夹下的所有文件,并连通文件夹一起传到服务器,
- C#调用 DLL
- 一个路径(包括HTTP、或者本地路径。或者MMS等路径)如何获得文件名?
- 如何把FORM2里的值写入到FORM1里的DATAGRIDVIEW里
- 用C#作script为什么没有效果?
- 请问怎样解决文件路径太长?
- NPOI操作EXCEL问题。。。
- 关于UIM卡中SMS格式问题
用
if{}else也可以啊
2.循环dataset,里面判断对应列是,然后转换,之后insert into
---------------
string sex=="男"?"1":"2";
varchar对应的就是string啊转换为int直接int.parse("xxx");
例如 select a.id as 部门 from a inne join b on a.名称=b.部门
testa
depart1 1
depart2 2
depart3 3
depart4 4testb
depart1 other1
depart2 other2
depart3 other3
depart4 other4select a.id,b.value from testa as a inner join testb as b on a.name=b.name
或者说你也可以把数据库里的部门读出来,然后根据excel读取出来的部门做判断,如果部门名称相同,直接获取数据库里读取出来的id插入数据库就好了。
如果不想用多表。也可以把字典里的数据单独放在一个Dictionary中。比如用'男'当key 值是 1
这样在插入时可以直接插入值
EXECL中读出来的数据直接到该表中查询得
没错 先将各个表链接 刷选出记录后再insert到数据库中
public class ExcelObject
{
private string excelFile;
OleDbConnection conn; public ExcelObject(string ExcelFileName)
{
System.IO.FileInfo fi = new System.IO.FileInfo(ExcelFileName);
if (fi.Extension.ToLower() == ".xls")
conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + ExcelFileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
else
conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFileName + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'"); }
public DataTable GetTable(string SheetName)
{
try
{
string sheetName = SheetName;
if (!sheetName.EndsWith("$"))
sheetName = sheetName + "$";
conn.Open();
DataTable dt=new DataTable();
string sql = "select * from [" + sheetName + "]";
OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
da.Fill(dt);
conn.Close();
return dt;
}
catch
{
conn.Close();
return null;
}
}
}//上传
protected void btnUpLoad_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
System.IO.FileInfo fi = new System.IO.FileInfo(FileUpload1.FileName);
if (fi.Extension.ToLower() == ".xls" || fi.Extension.ToLower() == ".xlsx")
{
string file = string.Format("XX_{0}{1}", UserID, fi.Extension);
string destfile = Server.MapPath("ProductExcel/" + file);
FileUpload1.SaveAs(destfile);
btnUpLoad.CommandArgument = destfile;
ExcelObject eo = new ExcelObject(destfile);
ddltable.Items.Clear();
foreach (string s in eo.GetTables())
ddltable.Items.Add(s);
}
else
{
Alert("请确认您上传的是Excel文件");
}
}
else
{
Alert("请选择文件");
}
}//insert
ExcelObject eo = new ExcelObject(btnUpLoad.CommandArgument);
DataTable dt1 = eo.GetTable(ddltable.SelectedValue);
foreach(DataRow dr in dt1.rows)
{
datarow dr1 =dt.newrow();
dr1["XX"]=dr["XX"]
dr2["YY"]=dr["yy"].tostring()=="男"?1:2;
……
}
//最后用sqlcommandbuilder 更新下数据 就成了
上面手误写错了 dr1[XX] dr1[yy]