将Excel上传到服务器,读取Excel数据写入到数据库
来源:互联网 发布:nba2k乔丹捏脸数据 编辑:程序博客网 时间:2024/06/10 18:19
方法一:使用LinqToExcel.dll
1、上传Excel文件到服务器上
HttpPostedFileBase mypostfile = Request.Files[0]; string myfile = MyPathEx.myfileName(@"事业单位准考证上传"); myfile = myfile + ".xlsx"; myfile = MyPathEx.saveFile(mypostfile, Server, @"/ImportFile/", myfile);//保存上载文件的内容,并返回上传的路径+文件名 ExamineeOp_1.SaveExcelToDB(myfile);
/// <summary> /// 返回一个当有日期组成的文件名 /// </summary> /// <param name="myPerFix">可能要加的文件名前缀</param> /// <returns></returns> public static string myfileName(string myPerFix = "") { string mys = DateTime.Now.ToString("yyyyMMddHHmmss"); return myPerFix + mys; }
2、读取Excel文件
/// <summary> /// 导入设置好的考生信息Excel数据至数据库 /// </summary> /// <param name="excelfile">本地Excel数据文件</param> /// <param name="mysheet"></param> public static void SaveExcelToDB(string excelfile, string mysheet = "sheet1") { // string myfile = MyPathEx.myfileName(@"/ImportFile/") +excelfile; var excelv = new ExcelQueryFactory(excelfile); IEnumerable<string> Mysh = excelv.GetWorksheetNames(); //下载 AccessDatabaseEngine //http://www.microsoft.com/zh-cn/download/details.aspx?id=13255 var result = (from c in excelv.Worksheet<ExamineeC_1_Dto>(Mysh.First<string>()) select c).ToList(); DalFactory.GetManager().GetProvider<IExaminee_1_Dal>(mydal_link).ExcelImportSave(result); }
public class ExamineeC_1_Dto { public int 报名序号 { get; set; } public string 姓名 { get; set; } public string 身份证号 { get; set; } public string 报考单位 { get; set; } public string 报考岗位 { get; set; } public string 报考专业 { get; set; } public string 最高学历 { get; set; } public string 报考职位 { get; set; } public string 准考证号 { get; set; } public string 考试科目A { get; set; } public string 考试地点A { get; set; } public string 考试日期A { get; set; } public string 考试时间A { get; set; } public string 考场号A { get; set; } public string 座位号A { get; set; } public string 考试科目B { get; set; } public string 考试地点B { get; set; } public string 考试日期B { get; set; } public string 考试时间B { get; set; } public string 考场号B { get; set; } public string 座位号B { get; set; } }
3、更新数据库
public void ExcelImportSave(List<ExamineeC_1_Dto> myexcel) { using (var ctx = new PersonnelExamEntities()) { var updatas = ctx.Ex_Examinee.ToList(); foreach (var item in updatas) { var impd = myexcel.Where(o => o.报名序号 == item.ExamineeID).FirstOrDefault(); if (impd != null) { item.ExamineeCode = impd.准考证号; item.Item_6 = impd.考试科目A; item.ExamAddress = impd.考试地点A; item.ExamDate = impd.考试日期A; item.ExamTime = impd.考试时间A; item.ExamPost = impd.考场号A; item.ExamPostNumber = impd.座位号A; item.Item_8 = impd.考试科目B; item.ExamAddress1 = impd.考试地点B; item.ExamDate1 = impd.考试日期B; item.ExamTime1 = impd.考试时间B; item.ExamPost1 = impd.考场号B; item.ExamPostNumber1 = impd.座位号B; } } ctx.SaveChanges(); } }
方法二:Excel.Application
<table cellpadding="1" cellspacing="1" border="1" style="width: 50%; text-align: center"> <tr> <td> 选择文件 </td> <td style="padding-left: 10px; text-align: left"> <input id="excelCB" type="file" runat="server" style="cursor: hand" /> </td> </tr> <tr> <td> 数据来源 </td> <td style="padding-left: 10px; text-align: left"> <asp:RadioButtonList ID="radioLX" runat="server"> <asp:ListItem Text="湖北银行" Value="0"></asp:ListItem> <asp:ListItem Text="银联" Value="1" Selected="True"></asp:ListItem> <asp:ListItem Text="手机" Value="2"></asp:ListItem> </asp:RadioButtonList> </td> </tr> <tr> <td> 账单日期 </td> <td style="padding-left: 10px; text-align: left"> <input id="txtTime" type="text" style="width: 115px" onclick="WdatePicker({startDate:'%y-%M-01',dateFmt:'yyyy-MM-dd',alwaysUseStartDate:true})" /> <%-- <asp:TextBox ID="dd" runat="server"></asp:TextBox>--%> </td> </tr> <tr> <td colspan="2"> <asp:Button ID="btnSubmit" runat="server" Text="提交" onclick="btnSubmit_Click" /> </td> </tr> </table>
protected void BindUnionPay() { GC.Collect(); string strSavePath, strSQL, strFileName, strFileExt; string A1, A2, A3, A4, A5, A6, A7, A8; strSavePath = Request.ServerVariables[3] + "Uploads/";//上传文件保存的物理文件夹 strFileName = Path.GetFileName(excelCB.PostedFile.FileName);//上传文件文件名 strFileExt = Path.GetExtension(strFileName);//上传文件扩展名 int intRow = 2;//Excel开始读取的行数 if (strFileExt.ToLower() == ".xls")//如果是Excel { strSavePath = strSavePath + "银联" + DateTime.Now.ToShortDateString() + ".xls"; Excel.Application excelApp = new Excel.Application();//申明Excel应用程序 Excel.Workbook excelWorkBook;//申明Excel工作簿 Excel.Worksheet excelWorkSheet;//申明工作表 strSQL = "truncate table tbl_UnionPay";//清空sql数据库中的tbl_UnionPay表 object[] obj = {}; SqlHelper.ExecuteNonQuery(strSQL, obj); try { if (File.Exists(strSavePath))//如果文件已经上传,删除文件 { FileInfo fi = new FileInfo(strSavePath); if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)//判断文件是否只读,若只读,则去掉只读属性 fi.Attributes = FileAttributes.Normal; File.Delete(strSavePath); } excelCB.PostedFile.SaveAs(strSavePath);//上传文件 excelWorkBook = excelApp.Workbooks.Open(@strSavePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//打开Excel excelWorkSheet = (Excel.Worksheet)excelWorkBook.Worksheets[1];//返回第1个工作表 //循环读取数据 while (Convert.ToString(excelWorkSheet.get_Range("A" + intRow, Missing.Value).Value) != "" && Convert.ToString(excelWorkSheet.get_Range("A" + intRow, Missing.Value).Value) != null) { A1 = Convert.ToString(excelWorkSheet.get_Range("A" + intRow, Missing.Value).Value); A2 = Convert.ToString(excelWorkSheet.get_Range("B" + intRow, Missing.Value).Value); A3 = Convert.ToString(excelWorkSheet.get_Range("C" + intRow, Missing.Value).Value); A4 = Convert.ToString(excelWorkSheet.get_Range("D" + intRow, Missing.Value).Value); A5 = Convert.ToString(excelWorkSheet.get_Range("E" + intRow, Missing.Value).Value); A6 = Convert.ToString(excelWorkSheet.get_Range("F" + intRow, Missing.Value).Value); A7 = Convert.ToString(excelWorkSheet.get_Range("G" + intRow, Missing.Value).Value); A8 = Convert.ToString(excelWorkSheet.get_Range("H" + intRow, Missing.Value).Value); //插入数据库中 strSQL = "insert into tbl_UnionPay(fld_pid, fld_shh, fld_orderNumber, fld_amount, fld_tradeTime, fld_clearDate, fld_tradeCode, fld_responseCode)"; strSQL += "values('" + A1 + "','" + A2 + "','" + A3 + "','" + A4 + "','" + A5 + "','" + A6 + "','" + A7 + "','" + A8 + "')"; SqlHelper.ExecuteNonQuery(strSQL, obj); intRow++; } Response.Write("<script language='javascript'>alert('导入数据表成功');</script>"); } catch (Exception ex) { Response.Write(ex.Message.ToString()); if (excelApp != null) { excelApp.DisplayAlerts = false; excelApp.Workbooks.Close(); excelApp.Quit(); KillProcess("EXCEL.EXE"); GC.Collect(); Response.Write("导入错误"); return; } } finally { if (excelApp != null) { excelApp.DisplayAlerts = false; excelApp.Workbooks.Close(); excelApp.Quit(); KillProcess("EXCEL.EXE"); System.GC.Collect(); } } } else { Response.Write("<script language='javascript'>alert('文件类型不正确!')</script>"); } } private void KillProcess(string processName) { System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("Excel"); foreach (System.Diagnostics.Process p in process) { if (!string.IsNullOrEmpty(processName)) { try { p.Kill(); } catch { } } } }
- 将Excel上传到服务器,读取Excel数据写入到数据库
- 如何将数据库数据写入到EXCEL表格中.[此代码为读取SHAREPOINT]
- java从Excel文件读取数据到数据库和从读取数据库数据写入Excel
- java将数据库数据写入到Excel中
- 将Excel文件内容写入到数据库
- 将Excel数据写入到TXT中
- 利用poi将数据写入到excel
- 微擎php上传excel并且读取数据;保存到数据库
- 用FileUpload将excel中的数据上传到服务器的数据库
- 上传Excel并将指定数据导入到数据库
- 读取 Excel 数据并保存到服务器数据库
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- VC6.0 ADO 读取Excel 2003内容,并将读取的数据上传到远程服务器SQL2008表中
- 上传EXCEL文件并读取到数据库
- 上传excel到服务器端,并写入到mssql数据库
- java读取Excel数据,然后写入到txt文件,并批量保存到oracle数据库中
- 读取Excel到数据库
- 数据库读取到excel
- select从数据库取出数据并显示
- ZENCART 1.38 升级到1.50 新版本
- 电子书之页管理draw.c
- 冰山一角 管窥中国互联网的地下世界
- continue,break,return的区别(JS验证)
- 将Excel上传到服务器,读取Excel数据写入到数据库
- 【Android开发学习34】OpenGL 性能优化
- Windows 窗体中的事件顺序
- JQUERY AJAX+STRUTS2批量上传文件
- ios获取本机已安装的app列表 前提是必须越狱才能获取
- Jquery UI的accordion组件实现多个标签同时打开
- Illegal attempt to associate a collection with two open session问题
- 随机数和伪随机数
- 字符串间最短距离(动态规划)