簡體   English   中英

從CSV導入數據

[英]Import Data From CSV

好的,這最初是一項非常簡單的任務,即將客戶數據導入我們的數據庫。 下面的腳本將所有數據加載到內存中,然后再進行操作。

string ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + FileLoc + "\"; Extended Properties=\"text;HDR=Yes;FMT=Delimited(,)\"";

using (OleDbConnection conn = new OleDbConnection(ConString))
{
    using (OleDbCommand cmd = new OleDbCommand("SELECT * FROM DataInput.csv", conn))
    {
        conn.Open();

        using (OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
        {
            int RowNumber = 0;
            while (dr.Read())
            {


                if(RowNumber==0)
                {
                    for (int i = 0; i < dr.FieldCount; i++)
                    {
                        TitleData.Add(new CSVTitleData() {ColumnID = i,ColumnName = dr.GetValue(i).ToString()});
                    }
                }
                else
                {
                    var DataToInsert = new List<CSVData>();
                    for (int i = 0; i < dr.FieldCount; i++)
                    {
                        if (i == 8)
                        {
                            var A = dr.GetValue(i);
                            Console.WriteLine(A.GetType().ToString() + " - " + i);
                        }
                        DataToInsert.Add(new CSVData(){ColumnID = i,Value = dr.GetValue(i).ToString()});
                    }

                    Content.Add(DataToInsert);
                }
                RowNumber++;
            }
        }
    }
}

直到有類似

4950
4951
4952
4998
2024
4176
7025-1
RVAC010
RVAC011
4945
4946
4947
4948

Excel試圖變得聰明,並以Int形式讀取每個字段。 結果將帶有字母的int讀取為DBNull。

現在,我已經完成了一些閱讀工作,很多人都在問這個問題,但沒有可靠的解決方案。 一種可能的解決方案是創建Scheme.ini,我想知道是否有人可以幫助我解決這個問題的確切格式?

或者,也許更容易閱讀CSV?

我對此有相同的經驗。...我在codeproject上找到了很棒的庫來讀取CSV文件:

http://www.codeproject.com/KB/database/CsvReader.aspx

該庫可以正確處理CSV等所有內容,因此您不必擔心此類問題。 它非常易於使用,並且可以通過DataTable返回數據。

它已成為我的代碼庫的重要組成部分,我強烈建議您檢查一下。

我建議放棄Excel,並使用類似LINQ to CSV的方法來處理您的處理。 您將消除對Excel的依賴,可以直接控制鍵入,而且啟動時重量更輕。

http://www.codeproject.com/KB/linq/LINQtoCSV.aspx

我最喜歡的讀取文件的方法是使用外部庫http://www.filehelpers.com/

描述:
FileHelpers是一個免費且易於使用的.NET庫,用於從文件,字符串或流中的固定長度或定界記錄中導入/導出數據。

它擁有一切,廚房的水槽還很小。

在asp.net應用程序中運行excel從來都不是一個好主意,並且Microsoft多次禁止了它。

您可以始終嘗試使用ODBC,該方法可以為Microsoft唯一的解決方案指定帶有ini文件的布局,盡管ODBC的日子已經過去了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM