第一種:
public static DataTable csvdatatable(string path) { DataTable dt = new DataTable(); string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;MAXSCANROWS=0'"using (OleDbConnection conn = new OleDbConnection(connectionString)) { using (OleDbCommand comm = new OleDbCommand()) { string sheetName = "Sheet1"; comm.CommandText = "Select * from [" + sheetName + "$]"; comm.Connection = conn; using (OleDbDataAdapter da = new OleDbDataAdapter()) { da.SelectCommand = comm; da.Fill(dt); return dt; } } } }
第二種:
需要引用
Microsoft.VisualBasic.dll
private static DataTable GetDataTabletFromCSVFile(string csv_file_path) { DataTable csvData = new DataTable(); try { using (TextFieldParser csvReader = new TextFieldParser(csv_file_path)) { csvReader.SetDelimiters(new string[] { "," }); csvReader.HasFieldsEnclosedInQuotes = true; string[] colFields = csvReader.ReadFields(); foreach (string column in colFields) { if (column == "Date" || column == "Test1" || column == "USL" || column == "LSL") { DataColumn datecolumn = new DataColumn(column); datecolumn.AllowDBNull = true; csvData.Columns.Add(datecolumn); } } while (!csvReader.EndOfData) { string[] fieldData = csvReader.ReadFields(); for (int i = 0; i < fieldData.Length; i++) { if (fieldData[i] == "") { fieldData[i] = null; } } csvData.Rows.Add(fieldData); } } } catch (Exception) { throw; } return csvData; }
第三種 需要引用
Microsoft.Office.Interop.Excel
public DataTable READExcel(string path) { Microsoft.Office.Interop.Excel.Application objXL = null; Microsoft.Office.Interop.Excel.Workbook objWB = null; objXL = new Microsoft.Office.Interop.Excel.Application(); objWB = objXL.Workbooks.Open(path); Microsoft.Office.Interop.Excel.Worksheet objSHT = objWB.Worksheets[1]; int rows = objSHT.UsedRange.Rows.Count; int cols = objSHT.UsedRange.Columns.Count; DataTable dt = new DataTable(); int noofrow = 1; for (int c = 1; c <= cols; c++) { string colname = objSHT.Cells[1, c].Text; dt.Columns.Add(colname); noofrow = 2; } for (int r = noofrow; r <= rows; r++) { DataRow dr = dt.NewRow(); for (int c = 1; c <= cols; c++) { dr[c - 1] = objSHT.Cells[r, c].Text; } dt.Rows.Add(dr); } objWB.Close(); objXL.Quit(); return dt; }