您的位置:首页 > 编程语言 > C#

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

2014-03-24 14:26 603 查看
/// <summary>

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

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

/// </summary>

/// <param name="Path">文件路劲</param>

/// <param name="exceptionMsg">异常信息</param>

/// <returns></returns>

public static System.Data.DataTable InputExcel(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.Format("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 && j == 1)

{

//表头

for (int k = 1; 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 && !"".Equals(range.Text.ToString()))

{

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: