Carissimi,
ecco il problema del giorno.
Ho la solita applicazione winform che deve caricare un file csv (di testo) delimitato con tanto di separatore.
Il separatore è la virgola
Qui di seguito riporto il codice utilizzato per il caricamento.
private DataSet CSVToDataSet(String PathFile )
{
OleDbConnection cn = new OleDbConnection ();
OleDbCommand cm = new OleDbCommand ();
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
String FileName = Path.GetFileName(PathFile);
String FolderName = Path.GetDirectoryName(PathFile);
try
{
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
FolderName +
";Extended Properties=\"Text;HDR=No;FMT=Delimited(,)\"";
cm.Connection = cn;
cm.CommandText = "SELECT * FROM [" + FileName + "]" + " ORDER BY F1";
cn.Open();
da.SelectCommand = cm;
da.SelectCommand.Connection = cn;
FileName = FileName.Substring(0, FileName.LastIndexOf("."));
da.Fill(ds, FileName);
cn.Close();
}
catch (Exception EX)
{
MessageBox.Show(EX.Message);
ds.Dispose ();
ds=null;
}
return ds;
}
In pratica cosi come è il dataset viene restituito con una tabella monocolonna, mentre nel file ce ne sono 7.
Se sostituisco la virgola con il punto e virgola nel file il caricamento avviene in maniera normale, ma siccome il separatore di default viene impostato su ogni macchina nel registro macchina non posso neanche pensare di fare una replace a palla.
Adesso la domanda come faccio a dire ad OleDB che deve usare come delimitatore la virgola e come separatore delle migliaia il punto?
Vi prego aiutatemi