1. 程式人生 > >c# 讀取csv檔案的三種方式

c# 讀取csv檔案的三種方式

class operateCSV
    {
        /// <summary>
        /// 讀取CSV檔案通過文字格式
        /// </summary>
        /// <param name="strpath"></param>
        /// <returns></returns>
        public DataTable readCsvTxt(string strpath)
        {
            int intColCount = 0;
            bool blnFlag = true;
            DataTable mydt = new DataTable("myTableName");

            DataColumn mydc;
            DataRow mydr;

            string strline;
            string [] aryline;

            System.IO.StreamReader mysr = new System.IO.StreamReader(strpath);

            while((strline = mysr.ReadLine()) != null)
            {
            aryline = strline.Split(',');

            if (blnFlag)
            {
            blnFlag = false;
            intColCount = aryline.Length;
            for (int i = 0; i < aryline.Length; i++ )
            {
            mydc = new DataColumn(aryline[i]);
            mydt.Columns.Add(mydc);
            }
            }

            mydr = mydt.NewRow();
            for (int i = 0; i < intColCount; i++ )
            {
            mydr[i] = aryline[i];
            }
            mydt.Rows.Add(mydr);
            }

            return mydt;
        }

        /// <summary>
        /// 利用SQL查詢CSV
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public DataTable readCsvSql(string path, string filename, string deviceName)
        {
            string strconn = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Text;", path);
            string sql = string.Format("SELECT * FROM [{0}]", filename);
            using (OleDbConnection conn = new OleDbConnection(strconn))
            {
                DataTable dtTable = new DataTable();
                OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);
                try
                {
                    adapter.Fill(dtTable);
                    logHelper.WriteLog(string.Format("[裝置]:{0}-->讀取檔案-->結果:成功", deviceName));
                }
                catch (Exception ex)
                {
                    dtTable = new DataTable();
                    logHelper.WriteLog(string.Format("[裝置]:{0}-->讀取檔案-->結果:{1}", deviceName, ex.Message));
                    throw ex;
                }
                return dtTable;
            }

        }

        /// <summary>
        /// 讀取CSV檔案
        /// </summary>
        /// <param name="mycsvdt"></param>
        /// <param name="filepath"></param>
        /// <returns></returns>
        public bool readCsvFile(ref DataTable mycsvdt, string filepath)
        {
            string strpath = filepath; //csv檔案的路徑
            try
            {
                int intColCount = 0;
                bool blnFlag = true;

                DataColumn mydc;
                DataRow mydr;

                string strline;
                string[] aryline;
                StreamReader mysr = new StreamReader(strpath, System.Text.Encoding.Default);

                while ((strline = mysr.ReadLine()) != null)
                {
                    aryline = strline.Split(new char[] { ',' });

                    //給datatable加上列名
                    if (blnFlag)
                    {
                        blnFlag = false;
                        intColCount = aryline.Length;
                        int col = 0;
                        for (int i = 0; i < aryline.Length; i++)
                        {
                            col = i + 1;
                            mydc = new DataColumn(col.ToString());
                            mycsvdt.Columns.Add(mydc);
                        }
                    }

                    //填充資料並加入到datatable中
                    mydr = mycsvdt.NewRow();
                    for (int i = 0; i < intColCount; i++)
                    {
                        mydr[i] = aryline[i];
                    }
                    mycsvdt.Rows.Add(mydr);
                }
                return true;

            }
            catch (Exception e)
            {
                //throw (Stack.GetErrorStack(strpath + "讀取CSV檔案中的資料出錯." + e.Message, "OpenCSVFile("));
                return false;
            }
        }
    }
}

相關推薦

QT中讀取XML檔案方式 的例項

第一部分:QXmlStreamReader XML(eXtensible Markup Language)是一種通用的文字格式,被廣泛運用於資料交換和資料儲存(雖然近年來 JSON 盛行,大有取代 XML 的趨勢,但是對於一些已有系統和架構,比如 WebService,由於歷史原因,仍舊會繼

C#讀取Excel的方式以及比較

優點:將Excel直接當做資料來源處理,通過SQL直接讀取內容,讀取速度較快。 缺點:讀取資料方式不夠靈活,無法直接讀取某一個單元格,只有將整個Sheet頁讀取出來後(結果為Datatable)再在Datatable中根據行列數來獲取指定的值。            當Excel資料量很大時。會非常佔

c# 讀取csv檔案方式

class operateCSV     {         /// <summary>         /// 讀取CSV檔案通過文字格式         /// </summary>         /// <param name="strpath"></para

C#開發小試手----小功能:C#讀取csv檔案——針對兩不同需求的表頭

在練習過程中先後遇到了以下兩種需求:完整讀取CSV檔案,包括CSV檔案的表頭只讀取CSV檔案內容,表頭自定義新增針對需求1,程式碼如下://*********************************csv2dt----讀取csv表頭方案****************

ASP.NET中 C#訪問資料庫用方式顯示資料表

第一種方式:使用DataReader從資料庫中每次提取一條資料,用迴圈遍歷表                下面是我寫的一個例子:  &nbs

C++ 建立物件的方式

第一種和第二種沒什麼區別,一個隱式呼叫,一個顯式呼叫,兩者都是在程序虛擬地址空間中的棧中分配記憶體,而第三種使用了new,在堆中分配了記憶體,而棧中記憶體的分配和釋放是由系統管理,而堆中記憶體的分配和釋放必須由程式設計師手動釋放。採用第三種方式時,必須注意一下幾點問題: n

C++讀取CSV檔案

寫入資料到CSV檔案 #include <iostream> #include <fstream> #include <iomanip> #include <sstream> #include <string> u

從TcpSocket上讀取資料的方式

我在一個專案中碰到了一個TcpSocket的應用。在java程式中使用TcpSocket同本機的一個服務進行程序間的通訊。由於通訊路徑只是單機並沒有經過網路,因此兩個程序之間的互通相對與網路傳輸是比較快速的。因此,程序間的互動使用瞭如下方式:(見上傳圖片)讓我們看一下程式碼實

C++讀取CSV檔案,並將逗號分隔符檔案分割成N個數組

#include <stdio.h> #include <string.h> // #include <windows.h> #define MAXLINE 256 struct student {     char stuName[10

c++讀取csv檔案和寫入檔案

一直以來感覺對檔案的讀寫和流的使用比較陌生,最近在寫的一個project正好需要讀取csv檔案的資料和建立新的csv檔案,於是在網上看了一些對csv檔案讀寫操作的文章,基本瞭解了大概的操作。 讀取.

Java從鍵盤讀取資料的方式

1.讀取單個字元: 從輸入流中讀取資料的下一個位元組,返回0~255範圍內的int型位元組值,如果達到輸入流的末尾,則返回-1。所以讀取char型別時需要將int型別轉換成char型別 Syst

C#讀取CSV檔案到DataTable

今天做個小程式,需要批量讀取CSV檔案到資料庫,網上有不少CSVHelper,但是看了下,多少都有點問題,主要是分割逗號問題,還有就是欄位處理問題。我自己做了些改良,用起來不錯。 using System; using System.Collections.Gener

springBoot使用Controller讀取配置檔案方式&讀取自定義配置方法

Controller 核心配置檔案 application.propertie web.msg=Hello! This is Controller demo; Controller:

C#讀取CSV檔案並儲存進資料庫

/// <summary>       /// 讀檔案       /// </summary>       /// <param name="path">檔案路徑</param

c&c++記憶體分配的方式

三種記憶體分配方式: 一:從全域性儲存區域分配:這時記憶體在程式編譯階段就已經分配好,該記憶體在程式執行的整個週期都有效,如:全域性變數、static靜態變數。 二:從棧區分配:在執行函式的時候,函式中的區域性變數的儲存單元都可以從棧中分配,函式執行結束後這些儲存單元都會

C#讀取Excel資料兩方式效能對比

方式一:程式讀取Excel資料,程式碼如下:             Excel.Application m_ExcelFile = new Excel.Application();             Excel._Workbook m_Workbook;     

C++讀取.csv檔案

//.csv檔案可以用excel開啟 struct Feature{ int ID int age;//年齡 int gender; }User; #include<

java讀取寫入檔案方式效率比較

public class ReadTxtJson {public static String readTxtFile(String FileName) throws Exception {BufferedInputStream bufferedInputStream = n

讀取檔案,並按原格式輸出檔案內容的方式

1 filename = 'Car.py' 2 3 #讀取整個檔案 4 with open(filename) as file_object: 5 lines = file_object.read() 6 print(lines) 7 8 9 #遍歷檔案物件 10

Python讀取txt檔案方式

文字處理是經常碰到的一個問題,Python的文字讀取有三個方法可以呼叫: read() readaline() readlines() 直接看名字就大概能猜出什麼意思。 第一個函式就是直接把文字內容全部讀取出來 第二個函式是逐行讀取 第三個函式是逐行全部讀取