excel数据导入c语言数组,C导入Excel数据的方式(两种)

本文详细介绍了使用C#从Excel文件中导入数据的两种方法:一种是通过OLEDB连接导入选定工作表数据到数据集;另一种是利用Microsoft.Office.Interop.Excel库直接读取Excel文件内容并转换为DataTable。这两种方法分别适用于不同的场景需求。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gifC导入Excel数据的方式(两种)

C#导入 Excel 数据的方式(两种) 方式一、导入数据到数据集对象,只支持 Excel 的标准格式,即不能合并单元格等等/// /// 导入数据到数据集中/// 备注:此种方法只支持 excel 原文件/// /// 文件路劲/// 异常信息/// public static System.Data.DataTable Excel(string Path, ref string exceptionMsg){System.Data.DataTable dt = null;try{string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;“ + “Data Source=“ + Path + “;“ + “Extended Properties=Excel 8.0;“;using (OleDbConnection conn = new OleDbConnection(strConn)){conn.Open();System.Data.DataTable sheetDt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);string[] sheet = new string[sheetDt.Rows.Count];for (int i = 0; i < sheetDt.Rows.Count; i++){sheet[i] = sheetDt.Rows[i][“TABLE_NAME“].ToString();}string strExcel = string.at(“select * from [{0}]“, sheet[0]);OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, strConn);dt = new System.Data.DataTable();myCommand.Fill(dt);conn.Close();}}catch (Exception ex){exceptionMsg = ex.Message;}return dt;}方法二、读取 Excel 文件,然后根据里面的数据信息拼装#region 读取 Excel 表格中数据到 DataTable 中public static System.Data.DataTable ChangeExcelToDateTable(string _path){System.Data.DataTable tempdt = new System.Data.DataTable();tempdt.TableName = “Excel“;Application app = new Application();object obj = System.Reflection.Missing.Value;try{Workbook _wBook = app.Workbooks.Open(_path, obj, obj, obj, obj, obj, obj, obj, obj, obj, obj, obj, obj, obj, obj);Worksheet _wSheet = (Worksheet)_wBook.Worksheets.get_Item(1);DataRow newRow = null;DataColumn newColumn = null;for (int i = 2; i <= _wSheet.UsedRange.Rows.Count; i++){newRow = tempdt.NewRow();for (int j = 1; j <= _wSheet.UsedRange.Columns.Count; j++){if (i == 2 k <= _wSheet.UsedRange.Columns.Count; k++){string str = (_wSheet.UsedRange[1, k] as Range).Value2.ToString();newColumn = new DataColumn(str);newRow.Table.Columns.Add(newColumn);}}Range range = _wSheet.Cells[i, j] as Range;if (range != null }}tempdt.Rows.Add(newRow);}_wSheet = null;_wBook = null;app.Quit();Kill(app);int generation = System.GC.GetGeneration(app);app = null;System.GC.Collect(generation);return tempdt;}catch (Exception ex){app.Quit();Kill(app);int generation = System.GC.GetGeneration(app);app = null;throw ex;}}#endregion#region 结束进程[DllImport(“User32.dll“, CharSet = CharSet.Auto)]private static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);private static void Kill(Microsoft.Office.Interop.Excel.Application excel){IntPtr t = new IntPtr(excel.Hwnd); //得到这个句柄,具体作用是得到这块内存入口int k = 0;GetWindowThreadProcessId(t, out k); //得到本进程唯一标志 kSystem.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); //得到对进程 k 的引用p.Kill(); //关闭进程 k}#endregion

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值