做这个是出于有这个需求由于图片太多,一个个对着execl来改的话需要大量的时间且一不小心可能就改错导致图片放到服务器上无法显示,学会了一些编程,你就可以轻松解决此类问题。为了节省时间提高工作的效率。学编程好处远远不仅在于此。好好学吧。任重道远。
第一、什么上下文对象和统计受影响的数量:
DataContext db = new DataContext();
private int materiel_count = 0; //开始的记录数
第二、读取execl表
public DataSet ExecleDs(string filenameurl, string table)
{
//此驱动对应的Execl格式为 xls
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
//此驱动对应的Execl格式为 xlsx
//string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filenameurl + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataSet ds = new DataSet();
OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
odda.Fill(ds, table);
return ds;
}
第三、根据execl表的内容和图片命名规则如 555-55-0.jpg做修改并保存到新的图片文件夹下:
protected void Button1_Click(object sender, EventArgs e)
{
string result = ""; //输出导出结果成功还是失败
if (FileUpload_insert.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
{
Response.Write("<script>alert('请您选择Excel文件')</script> ");
return;//当无文件时,返回
}
string IsXls = System.IO.Path.GetExtension(FileUpload_insert.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
if (IsXls != ".xls")
{
Response.Write("<script>alert('只可以选择Excel文件')</script>");
return;//当选择的不是Excel文件时,返回
}
string filename = FileUpload_insert.FileName; //获取Execle文件名 DateTime日期函数
string savePath = Server.MapPath(("~\\UploadFile\\") + filename);//Server.MapPath 获得虚拟服务器相对路径
//原文件夹路径
// string OldImgUrl = FileUpload_OldImgUrl.PostedFile.FileName;
string OldImgUrl = "C:\\Users\\Administrator\\Desktop\\原图\\3.xls";
OldImgUrl = OldImgUrl.Substring(0, OldImgUrl.LastIndexOf("\\")) + "\\";
//新文件夹路径
// string NewImgUrl = FileUpload_NewImgUrl.PostedFile.FileName;
string NewImgUrl = "C:\\Users\\Administrator\\Desktop\\新图\\3.xls";
NewImgUrl = NewImgUrl.Substring(0, NewImgUrl.LastIndexOf("\\")) + "\\";
// C:\Users\Administrator\Desktop\newimg\3.xls
//如果上传的execl文件存在就删除
if (File.Exists(savePath))
{
try
{
File.Delete(savePath);
}
catch
{
Response.Write("<script>alert('网页异常,请联系管理员!');</script>");
}
}
FileUpload_insert.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上
DataSet ds = ExecleDs(savePath, filename); //调用自定义方法
DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组
int rowsnum = ds.Tables[0].Rows.Count;
if (rowsnum == 0)
{
result = "Excel表为空表,无数据!";
}
else
{
for (int i = 0; i < dr.Length; i++)
{
string m_Code = dr[i]["流水号"].ToString(); //新商品code
string o_Code = dr[i]["旧编号"].ToString(); //旧商品code
string m_Name = dr[i]["商品名称"].ToString(); //商品名称
DirectoryInfo d = new DirectoryInfo(OldImgUrl);
FileInfo[] files = d.GetFiles();
foreach (var item in files)
{
string fileName = item.Name;//获取一个文件名称(图片名)
string[] nameFragments = fileName.Split('.');
string[] imgname = nameFragments[0].Split('-');
string imgcode = imgname[0] + "-" + imgname[1];
if (imgcode == o_Code)
{
item.MoveTo(Path.Combine(NewImgUrl, m_Code + "-" + imgname[2] + ".jpg"));
materiel_count++;
}
}
}//for循环结束
}//判断execl存在行结束
if (result == "ok")
{
result = "Excle表导入成功!重命名完成。";
}
if (result == "no")
{
result = "请联系管理员!";
}
Response.Write("<script>alert('受影响商品数量:" + (materiel_count) + " " + result + "');</script>");
}