标题: c#读取Excel并显示出来,然后存入数据库.
- GodSpeed 2008-03-14 10:44 阅读:1987
- 评论:6 查看评论 | 添加评论

直接从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[图片]    }

查看评论 | 添加评论
返回顶部 | 返回首页