上传文件
定义一个文件选择器隐藏和一个导入按钮
1 2
| <a id="lr_import" class="btn btn-default"><i class="fa fa-sign-in"></i> 导入</a> <input id="filed" name="filed" type="file" style="display:none" accept=".xls,.xlsx">
|
重新定义一个导入按钮的目的在于便于添加额外逻辑 例如:选择不同的模板向后台传参
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| $("#lr_import").click(function () { learun.layerForm({ id: 'form7', title: '导入类型 ', url: '/Fly_ZD/Fly_ZD_Head/ImportType', width: 500, height: 300, callBack: function (id, index) { var resData = top[id].acceptClick(); if (resData) { ImportType = resData; $("#filed").trigger("click"); return true; } else { learun.alert.error("请选择导入类型"); } } }); }) $("#filed").on("change", function () { var fileM = document.querySelector("#filed"); var fileObj = fileM.files[0]; var formData = new FormData(); formData.append('filed', fileObj); learun.loading(true, '正在导入……'); $.ajax({ url: "/Fly_ZD/Fly_ZD_Head/Import?ImportType=" + ImportType, type: "post", dataType: "json", data: formData, async: false, cache: false, contentType: false, processData: false, success: function (json_data) { learun.loading(false); $("#filed").val("") }, }); });
|
读取文件及存储数据
先将选择的文件上传到服务器 再读取该Excel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
public ActionResult Import(HttpPostedFileBase filed, string ImportType) { string target = Server.MapPath("/") + ($"/UploadFile/biqin/{DateTime.Now.Year}/{DateTime.Now.Month}/"); string filename = filed.FileName; string path = target + filename; if (!Directory.Exists(target)) { Directory.CreateDirectory(target); } filed.SaveAs(path); GetHeadData(path, ImportType); return Success(""); }
|
GetHeadData()
方法对读取到的数据存到数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
public void GetHeadData(string filepath, string ImportType) { try { DataSet gongsi = ReadExcelData(filepath); DataTable fp_data = gongsi.Tables[0]; DataTable xd_data = gongsi.Tables[1]; Fly_ZD_ImportMainEntity HeadEntity = new Fly_ZD_ImportMainEntity(); List<Fly_ZD_ImportfapiaoEntity> fp_xx = new List<Fly_ZD_ImportfapiaoEntity>(); List<Fly_ZD_ImportxiangdanEntity> xd_xx = new List<Fly_ZD_ImportxiangdanEntity>(); if (ImportType == "VN") { HeadEntity = this.VNmain_xx(gongsi.Tables[0]); fp_xx = this.VNfp_xx(fp_data); xd_xx = this.VNxd_xx(xd_data); } else if (ImportType == "VNBI") { HeadEntity = this.VNBImain_xx(gongsi.Tables[0]); fp_xx = this.VNBIfp_xx(fp_data); xd_xx = this.VNBIxd_xx(xd_data); } else if (ImportType == "VA") { HeadEntity = this.VAmain_xx(gongsi.Tables[0]); fp_xx = this.VNfp_xx(fp_data); xd_xx = this.VNxd_xx(xd_data); } fly_ZD_HeadIBLL.SaveImport(HeadEntity, fp_xx, xd_xx); } catch (Exception e) { } }
|
ReadExcelData()
方法读取Excel 注意工作表要加$例如下文INV$,PK$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
public static DataSet ReadExcelData(string filepath) { DataSet ds = new DataSet(); string connStr = "Provider=Microsoft.Jet.OleDb.4.0;" + "Data Source=" + filepath + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'"; string sql_F = "SELECT * FROM [{0}]"; System.Data.OleDb.OleDbConnection conn = null; System.Data.OleDb.OleDbDataAdapter xd_da = null; System.Data.OleDb.OleDbDataAdapter fp_da = null; System.Data.DataTable tblSchema = null; System.Collections.Generic.IList<string> xd_tblNames = null; System.Collections.Generic.IList<string> fp_tblNames = null; conn = new System.Data.OleDb.OleDbConnection(connStr); conn.Open(); tblSchema = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); xd_tblNames = new System.Collections.Generic.List<string>(); fp_tblNames = new System.Collections.Generic.List<string>(); string xd_tblname = ""; string fp_tblname = ""; for (int tblname = 0; tblname < tblSchema.Rows.Count; tblname++) { if (tblSchema.Rows[tblname][2].ToString() == "INV$") { xd_tblname = tblSchema.Rows[tblname][2].ToString(); } if (tblSchema.Rows[tblname][2].ToString() == "PK$") { fp_tblname = tblSchema.Rows[tblname][2].ToString(); } } string[] xd_tblnames = { xd_tblname }; string[] fp_tblnames = { fp_tblname }; xd_tblNames = new List<System.String>(xd_tblnames); fp_tblNames = new List<System.String>(fp_tblnames);
xd_da = new System.Data.OleDb.OleDbDataAdapter(); fp_da = new System.Data.OleDb.OleDbDataAdapter(); foreach (string tblName in xd_tblNames) { xd_da.SelectCommand = new System.Data.OleDb.OleDbCommand(String.Format(sql_F, tblName), conn); try { xd_da.Fill(ds, tblName); } catch { if (conn.State == ConnectionState.Open) { conn.Close(); } } } foreach (string fp_tblName in fp_tblNames) { xd_da.SelectCommand = new System.Data.OleDb.OleDbCommand(String.Format(sql_F, fp_tblName), conn); try { xd_da.Fill(ds, fp_tblName); } catch { if (conn.State == ConnectionState.Open) { conn.Close(); } } } return ds; }
|