直接从Excel中读取出来,然后对"供应商" select distinct,然后分别对每个供应商做表.
[图片][图片]Code
1
[图片]
2
[图片] protected void Page_Load(object sender, EventArgs e)
3
[图片][图片] [图片]{
4
[图片] DataSet ds = ImportExcel(Server.MapPath("ExcelFile/供应商违约扣款.xls"));
5
[图片] GridView1.DataSource = ds.Tables["ExcelInfo"].DefaultView;
6
[图片] GridView1.DataBind();
7
[图片]
8
[图片] ToDataBase(ds);
9
[图片] }
10
[图片]
11
[图片] private DataSet ImportExcel(string strFileName)
12
[图片][图片] [图片]{
13
[图片] if (strFileName == "") return null;
14
[图片] string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
15
[图片] "Data Source=" + strFileName + ";" +
16
[图片] "Extended Properties=Excel 8.0;HDR=Yes;IMEX=1";
17
[图片] OleDbDataAdapter ExcelDA = new OleDbDataAdapter("SELECT trim(供应商) as 供应商,零件名称,型号,批量,下线数,下线率,不合格原因,考核原因,考核金额 FROM [Sheet1$]", strConn);
18
[图片] DataSet ExcelDs = new DataSet();
19
[图片] try
20
[图片][图片] [图片]{
21
[图片] ExcelDA.Fill(ExcelDs, "ExcelInfo");
22
[图片]
23
[图片] }
24
[图片] catch (Exception err)
25
[图片][图片] [图片]{
26
[图片] System.Console.WriteLine(err.ToString());
27
[图片] }
28
[图片] return ExcelDs;
29
[图片] }
30
[图片]
31
[图片]
32
[图片] private bool ToDataBase(DataSet ds)
33
[图片][图片] [图片]{
34
[图片] DataTable dtSupplier = new DataTable("dtSupplier");
35
[图片]
36
[图片]
37
[图片] DataView dv = ds.Tables[0].DefaultView;
38
[图片]
39
[图片][图片] string[] column =
[图片]{ "供应商" };
40
[图片] dtSupplier = dv.ToTable(true, column);
41
[图片]
42
[图片] for (int i = 0; i < dtSupplier.Rows.Count; i++)
43
[图片][图片] [图片]{
44
[图片]
45
[图片] DataRow[] r = ds.Tables[0].Select("供应商='" + dtSupplier.Rows[i]["供应商"].ToString() + "'");
46
[图片]
47
[图片] //插父表
48
[图片]
49
[图片] for (int j = 0; j < r.Length; j++)
50
[图片][图片] [图片]{
51
[图片] string ItemName = r[j]["零件名称"].ToString();
52
[图片] string scale = r[j]["型号"].ToString();
53
[图片] string batch = r[j]["批量"].ToString();
54
[图片] string downLine = r[j]["下线数"].ToString();
55
[图片] string downPercent = r[j]["下线率"].ToString();
56
[图片] string outReason = r[j]["不合格原因"].ToString();
57
[图片] string reason = r[j]["考核原因"].ToString();
58
[图片] string amt = r[j]["考核金额"].ToString();
59
[图片]
60
[图片] //插子表
61
[图片] }
62
[图片]
63
[图片] //save
64
[图片] }
65
[图片] return true;
66
[图片] }