龙图教育:C#导入Excel数据的两种方式

C#导入Excel数据的两种方式

方式一、导入数据到数据集对象,只支持Excel的标准格式,即不能合并单元格等等

///

/// 导入数据到数据集中

/// 备注:此种方法只支持excel原文件

///

///

///

///

public static System.Data.DataTable InputExcel(string Path, ref string exceptionMsg)

{

System.Data.DataTable dt = null;

try

{

string strConn =

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

sheet[i] =

sheetDt.Rows[i][

}

string strExcel = string.Format(

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 =

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

{

newRow = tempdt.NewRow();

for (int j = 1; j

_wSheet.UsedRange.Columns.Count; j++)

{

if (i == 2 && j == 1)

{

//表头

for (int k = 1; 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

&& !

{

newRow[j - 1] =

range.Value2;

}

}

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(

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); //得到本进程唯一标

志k

System.Diagnostics.Process p =

System.Diagnostics.Process.GetProcessById(k); //得到对进程k的引用 p.Kill(); //关闭进程k

}

#endregion

C#导入Excel数据的两种方式

方式一、导入数据到数据集对象,只支持Excel的标准格式,即不能合并单元格等等

///

/// 导入数据到数据集中

/// 备注:此种方法只支持excel原文件

///

///

///

///

public static System.Data.DataTable InputExcel(string Path, ref string exceptionMsg)

{

System.Data.DataTable dt = null;

try

{

string strConn =

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

sheet[i] =

sheetDt.Rows[i][

}

string strExcel = string.Format(

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 =

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

{

newRow = tempdt.NewRow();

for (int j = 1; j

_wSheet.UsedRange.Columns.Count; j++)

{

if (i == 2 && j == 1)

{

//表头

for (int k = 1; 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

&& !

{

newRow[j - 1] =

range.Value2;

}

}

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(

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); //得到本进程唯一标

志k

System.Diagnostics.Process p =

System.Diagnostics.Process.GetProcessById(k); //得到对进程k的引用 p.Kill(); //关闭进程k

}

#endregion


相关文章

  • 公务员登记信息系统说明书v4.0
  • <公务员登记信息系统> 软件使用说明 人力资源和社会保障部 二○一三年十一月 目 录 ※ 升级说明 ........................................................ 1 新用户操作 ...查看


  • 国家学生体质健康标准
  • 国家学生体质健康标准 数据管理系统 --使用操作简介 教育部全国学生体质健康标准数据管理中心 中国学生体质健康网 国家学生体质健康标准数据管理系统 使用操作简介 一. 数据上报基本操作流程 1.首先登录中国学生体质健康网登记学校信息并下载验 ...查看


  • 机构编制实名制管理系统用户手册(机关事业单位)
  • 机关事业单位 用 户 手 册 2010年11月 目 录 第一章 引言 ..................................................................................... ...查看


  • 导入excel文件处理流程节点的解决方案
  • 在没用管理系统的时候,很多企业都会将一些生产或流水线操作的数据保存在excel文件中,按名称或按sheet页形成多份excel的表格数据. 当运用了工作流管理系统后,这些生产或流水线的操作都会记录成流程的节点,过程需要记录的数据,也会应用到 ...查看


  • 学籍常见问题汇总
  • 中小学生学籍信息管理系统 常见问题汇总 关于采集范围 . .................................... 9 1.都采集哪些学校的数据? ...................... 9 2.民办学校的学生数据采集 ...查看


  • 572-国家学生体质健康标准
  • 国家学生体质健康标准 数据管理系统 --使用操作简介 教育部全国学生体质健康标准数据管理中心 中国学生体质健康网 国家学生体质健康标准数据管理系统 使用操作简介 一. 数据上报基本操作流程 1.首先登录中国学生体质健康网www.csh.ed ...查看


  • Delphi控制Excel自动生成报表1
  • Delphi控制Excel自动生成报表 2010-05-23 23:14 1 引言 数据报表作为企事业单位上报和下达的重要信息载体,随着信息化建设的不断推进,在实际的工作中得到了前所未有的应用.因此,数据报表已经成为管理信息系统中重要的一项 ...查看


  • 移动电费.水费.租赁费管理平台建设方案
  • 移动电费. 水费.租赁费管理平台建 议 方 案 第一章 系统背景 ....................................................................................... ...查看


  • EXCEL电子表格使用技巧大全 – [人人分享
  • 1.快速输入大量含小数点的数字 如果我们需要在Excel XP工作表中输入大量的带有小数位的数字时,依照普通的输入方法,我们可能按照数字原样大小直接输入,例如现在要在单元格中输入0.05这个数字时,我们会把"0.05"原 ...查看


热门内容