[英]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.filehelpers.com/
描述:
FileHelpers是一個免費且易於使用的.NET庫,用於從文件,字符串或流中的固定長度或定界記錄中導入/導出數據。
它擁有一切,廚房的水槽還很小。
在asp.net應用程序中運行excel從來都不是一個好主意,並且Microsoft多次禁止了它。
您可以始終嘗試使用ODBC,該方法可以為Microsoft唯一的解決方案指定帶有ini文件的布局,盡管ODBC的日子已經過去了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.