




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、思路:1、上传Excel文件到服务器2、将Excel内容读取出来 填充到DataTable中3、将DataTable内容保存到数据库内。(当然还可以先校验后帮到页面上,让用户再次确认要导入的数据。这里我省掉了,只列出详细的错误清单)so easy。实现:首先 要准备一个Excel模板。Excel第一行一定要写入你要导入的字段名称,名称可以用汉字,但只要你能和数据库字段对应起来用程序处理就可以了。有必要的话 在页面上写点说明, 比如哪个字段一定要填写什么样的数据。当然程序异常处理还是要的。1、前台页面代码页面上就简单点 放一个上传控件、一个导入的按钮。<div> <p>&
2、lt;b>数据导入:</b></p> <div> 选择文件:<asp:FileUpload ID="fu_excel" runat="server" /> <asp:Button ID="btn_save" runat="server" Text="导入" onclick="btn_save_Click" /><br /> <asp:Label ID="lb_msg" ru
3、nat="server" Text="" ForeColor="Red"></asp:Label> </div> </div>2、后台代码 导入按钮事件/ <summary> / 上传 保存到数据库 / </summary> / <param name="sender"></param> / <param name="e"></param> pro
4、tected void btn_save_Click(object sender, EventArgs e) ExcelUpload(); 上传导入的一些方法/ <summary> / 文件上传方法 / </summary> protected void ExcelUpload() /存放文件路径 String filepath = "" /存放文件扩展名 string fileExtName = "" /文件名 string mFileName = "" /服务器上的相对
5、路径 string mPath = "" if (fu_excel.PostedFile.FileName != "") /取得文件路径 filepath = fu_excel.PostedFile.FileName; /取得文件扩展名 fileExtName = filepath.Substring(filepath.LastIndexOf(".") + 1); /取得服务器上的相对路径 mPath = this.Request.PhysicalApplicationPath + "UpLoadFilesExcel&quo
6、t; /取得文件名 mFileName = filepath.Substring(filepath.LastIndexOf("") + 1); /保存文件到指定目录 if (!Directory.Exists(mPath) try Directory.CreateDirectory(mPath); catch MessageBox.Show(this.Page, "服务器创建存放目录失败"); /如果文件已经存在则删除原来的文件 if (File.Exists(mPath + mFileName) try File.Delete(mPath + mFil
7、eName); catch MessageBox.Show(this.Page, "服务器上存在相同文件,删除失败。"); #region 判断文件扩展名 /判断上传文件格式 Boolean fileOK = false; if (fu_excel.HasFile) String fileExtension = System.IO.Path.GetExtension(fu_excel.FileName).ToLower(); String allowedExtensions = ".xls" ; for (int i = 0; i < allowe
8、dExtensions.Length; i+) if (fileExtension = allowedExtensionsi) fileOK = true; #endregion #region 判断文件是否上传成功 /判断文件是否上传成功 bool fileUpOK = false; if (fileOK) try /文件上传到服务器 fu_excel.PostedFile.SaveAs(mPath + mFileName); fileUpOK = true; catch MessageBox.Show(this.Page,"文件上传失败!请确认文件内容格式符合要求!")
9、; else MessageBox.Show(this.Page,"上传文件的格式错误,应为.xls格式!"); #endregion #region 将Excel填充到数据集 /将Excel填充到数据集 if (fileUpOK) System.Data.DataTable dt_User = new System.Data.DataTable(); try /获取Excel表中的内容 dt_User = GetList(mPath + mFileName); if (dt_User=null) MessageBox.Show(this.Page, "获取Exc
10、el内容失败!"); return; catch MessageBox.Show(this.Page,"获取Excel内容失败!"); int rowNum = 0; try rowNum = dt_User.Rows.Count; catch MessageBox.Show(this.Page,"Excel表获取失败!"); if (rowNum = 0) MessageBox.Show(this.Page,"Excel为空表,无数据!"); else /数据保存 SaveToDataBase(dt_User); #end
11、region #region 读取Excel表数据 / <summary> / 根据Excel文件路径读取Excel表中第一个表的内容 / </summary> / <param name="FilePath">Excel文件的物理路径</param> / <returns>DataSet</returns> public System.Data.DataTable GetList(string FilePath) string connectionString = "Provider=Mic
12、rosoft.Jet.OLEDB.4.0;" + "Data Source=" + FilePath + "" + "Extended Properties=Excel 8.0;" string strSql = string.Empty; /string workSheetName = Get_FistWorkBookName(FilePath); /第一个工作表的名称。考虑到稳定性,就直接写死了。 string workSheetName = "Sheet1" if (workSheetName !=
13、 "") strSql = "select * from " + workSheetName + "$" try OleDbConnection conn = new OleDbConnection(connectionString); conn.Open(); OleDbDataAdapter myCommand = null; myCommand = new OleDbDataAdapter(strSql, connectionString); System.Data.DataTable dt = new System.Data.
14、DataTable(); myCommand.Fill(dt); conn.Close(); conn.Dispose(); return dt; catch (Exception) return null; else return null; / <summary> / 根据EXCEL文件路径获取EXCEL第一个工作薄的表名 / 缺点:需要打开excel占用进程,暂不使用此方法 / 优点:更灵活,可以随意更改表名 / </summary> / <param name="fileName"></param> / <ret
15、urns></returns> public string Get_FistWorkBookName(string fileName) Application app = new ApplicationClass(); Workbook workBook = app.Workbooks.Add(Type.Missing); ; Worksheet workSheet = (Worksheet)workBook.Sheets.get_Item(1); string rev = string.Empty; if (!File.Exists(fileName) throw new
16、Exception("指定路径的Excel文件不存在!"); Workbook tmpworkBook; Worksheet tmpworkSheet; try object missing = System.Reflection.Missing.Value; /打开一个WorkBook tmpworkBook = app.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type
17、.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true, missing); / tmpworkSheet = (Worksheet) workBook.Sheets.get_Item ( 1 ); app.Visible = false; tmpworkSheet = (Worksheet)tmpworkBook.Worksheets1; rev = tmpworkSheet.Name; catch rev = "" finally tmpworkSheet = null; tmpwor
18、kBook = null; this.Dispose(); return rev; #endregion #region 将数据保存到数据库 / <summary> / 将数据保存到数据库 / </summary> / <param name="dt_user"></param> protected void SaveToDataBase(System.Data.DataTable dt_user) string strMsg = "" lb_msg.Text = "" /创建事务s SqlTransaction trans_user = null; /打开数据连接 SqlConnection con = new SqlConnection(PubConstant.ConnectionString); con.Open(); /事务开始 trans_user = con.BeginTransaction(); try / 导入的话能用事务还是用事务处理吧 /事务提交 trans_user.Commit(); /flagOk = true; MessageBox.Show(this.Page, &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CCS 01-2020智能化煤矿(井工)分类、分级技术条件与评价
- T/CCMA 0192-2024高原隧道纯电动轮胎式装载机
- T/CCMA 0060-2018牵引用铅酸蓄电池电源装置箱体
- T/CCASC 6008-2023氯碱行业聚氯乙烯树脂碳排放核算标准
- T/CCAS 008-2019水泥及混凝土用粉煤灰中氨含量的测定方法
- T/CBDA 2-2016绿色建筑室内装饰装修评价标准
- T/CAZG 001-2019川金丝猴饲养管理技术规范
- T/CATSI 08-001-2020小产区产品认定通则
- T/CATCM 029-2024中药材产地加工(趁鲜切制)生产技术规范
- T/CASWSS 006-2023社区老年中医健康管理服务中心服务规范
- 个人能力展示
- 国家职业技术技能标准 4-14-02-05 老年人能力评估师 人社厅发202332号
- 江苏省南通市历年中考数学试卷真题合集(共6套)
- 飞行汽车的商业化应用
- 全国各气象台站区站号及经纬度
- 动漫设计毕业论文当代中国动漫的思考
- 大班数学《钱币换算》课件
- 危险化学品企业安全培训空间建设应用指南
- 国开电大本科《外国文学专题》在线形考(形考任务一至四)试题及答案
- 04.第四讲 坚持以人民为中心
- 三年级下册第七单元国宝大熊猫资料
评论
0/150
提交评论