文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>两种方法读取XML文件数据

两种方法读取XML文件数据

时间:2011-04-08  来源:gerogezhao

终于在博客园发表自己的第一篇博文了,由于自己属于刚入门的菜鸟,文章不是很专业,还请大家多指教,Ok,废话不多说了,直接进主题,前一阵项目需求,需要添加导入excel数据到oracle数据库,第一次直接用OleDb的方法导入,结果由于用户提供的excel文件数据不规范,例如一列中格式为DateTime,但其中既有汉字描述,又有字符串,导入会出现错误,于是经过在网上搜索总结,发现了另一种方法,就是分单元格依次导入。两种方法各有特点: 方法一:OleDb方法,导入速度快,但是导入过程微软自己进行,开发者无法控制,所以无法处理个别单元格的问题。 方法二:分单元格导入,采用微软提供的Office开发包。 下面是两种方法的代码: 方法一:需要引入命名空间using System.Data.OleDb; /// /// ReadExcelDataAll()读取Excel数据,一次填充DataSet,速度快,但不可以处理不规则的数据类型 /// /// /// DataSet public DataSet ReadExcelDataAll(string filePath) { string strConExcel07 = "Provider=Microsoft.ACE.OLEDB.12.0;" + " Extended Properties=Excel 12.0;" + "data source=" + filePath; string strSQL = " SELECT * FROM [" + excelSheetName + "$] ";//excelSheetName是要导入excel的sheet页名称 DataSet myDataSet = new DataSet(); OleDbConnection myConn = new OleDbConnection(strConExcel07); OleDbDataAdapter myCommand = new OleDbDataAdapter(strSQL, myConn); try { myConn.Open(); myCommand.Fill(myDataSet); C日志打印.PrintLog("导入Excel日志.log", "Excel文件解析成功。"); } catch (Exception ex) { myConn.Close(); C日志打印.PrintLog("导入Excel错误日志.log", "Excel文件解析失败,错误信息为:" + ex.Message, true); } //关闭此数据链接 myConn.Close(); return myDataSet; } 方法二:由于读取的速度相比方法一慢了很多,所以添加进度条。此方法能够对单元格进行个别处理,消除不规则的数据格式 需要引入的命名空间using Excel = Microsoft.Office.Interop.Excel; /// /// ReadExcelDataCell()按单元格数据,读取速度慢,但可以处理不规则数据类型 /// /// Excel文件路径 /// 读取进度条 /// DataTable public DataTable ReadExcelDataDivCell(string filePath, ProgressBar progressBar) { Excel.Application xlsApp = null; Excel.Workbook workBook = null; Excel.Worksheet workSheet = null; int sheetIndex = 1; DataTable dataTable = new DataTable(); try { object objOpt = System.Reflection.Missing.Value; xlsApp = new Excel.Application(); workBook = xlsApp.Workbooks.Open(filePath, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt); workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(sheetIndex); DataRow newRow = null; progressBar.Visibility = Visibility.Visible; progressBar.Maximum = workSheet.UsedRange.Rows.Count; //System.Windows.Forms.Cursor.Clip = new System.Drawing.Rectangle(1440, 900, 1440, 900); for (int i = 1; i

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载