Bazı liberal lisanslar altında CSV ayrıştırıcısının iyi ve ücretsiz bir uygulaması var mı? Java için SuperCSV'nin bazı muadili , belki bir bağlantı noktası?
Bazı liberal lisanslar altında CSV ayrıştırıcısının iyi ve ücretsiz bir uygulaması var mı? Java için SuperCSV'nin bazı muadili , belki bir bağlantı noktası?
Yanıtlar:
CodeProject'te güzel bir uygulama var :
145 alan ve 50.000 kayıt içeren 45 MB'lik bir CSV dosyasıyla, dünya numaralarına daha fazla bilgi vermek için, okuyucu yaklaşık 30 MB / sn işlem yapıyordu. Sonuç olarak, 1.5 saniye sürdü! Makine özellikleri P4 3.0 GHz, 1024 MB idi.
Microsoft.VisualBasic.FileIO.TextFieldParse
ve hile yaptı.
DataTable'a bir CSV dosyası yükleyebilirsiniz.
Basit kod -
static DataTable CsvToDataTable(string strFileName)
{
DataTable dataTable = new DataTable("DataTable Name");
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + Directory.GetCurrentDirectory() + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\""))
{
conn.Open();
string strQuery = "SELECT * FROM [" + strFileName + "]";
OleDbDataAdapter adapter =
new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
adapter.Fill(dataTable);
}
return dataTable;
}
Projenizi x86 işlemciye derlediğinizden emin olun. X64 için çalışmaz.
filehelpers deneyin Şaşırtıcı derecede iyi çalışın. Her gün 100 MB'lık bir dosyayı ayrıştırmak için kullanıyorum.
FileHelpers kitaplığını denediniz mi? Ücretsizdir, açık kaynaklıdır ve CSV dosyalarını ayrıştırmak için kullanılabilir.
CommonLibrary.NET'in bir parçası olan CSV Parser'ı kullanmaya başladım .
.NET 3.5 kullanır, kolay bir API'ye ve yinelemeler için uygun aşırı yüklemelere / yöntemlere ve lamda'lara sahiptir.
Bunun için yukarıdaki gibi herhangi bir kıyaslamam yok, ama bunun güzel yanı, Java Commons'a benzer bir kitaplığın yalnızca bir bileşeni olması. Bu yüzden, diğer şeylerin yanı sıra bir Komut satırı ayrıştırıcısı, Depo uygulaması da elde ediyorum.