zoukankan      html  css  js  c++  java
  • c# 将csv文件转换datatable的三种方式。

    第一种:

    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;
            }
  • 相关阅读:
    ASP.NET MVC中三方登录: 微软、谷歌、Office365
    ComponentOne Xuni助力Xamarin开发者突破百万,快速开发Android、IOS Apps
    深入浅出OOP(四): 多态和继承(抽象类)
    挑灯熬夜看《Build 2015 Keynote》图文笔记
    深入浅出OOP(三): 多态和继承(动态绑定/运行时多态)
    PHP 开发社区微信服务号实战图解
    年卡在手,城墙我走: 记葡萄城控件团队建设
    深入浅出OOP(二): 多态和继承(继承)
    Windows 10 技术预览
    深入浅出OOP(一): 多态和继承(早期绑定/编译时多态)
  • 原文地址:https://www.cnblogs.com/jack-jun/p/10677966.html
Copyright © 2011-2022 走看看