Datagridview (vue SQL) à exporter en fichier TXT... comment faire ?
stef93420
Messages postés2Date d'inscriptionvendredi 13 juillet 2007StatutMembreDernière intervention26 juin 2008
-
22 juin 2008 à 21:17
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
24 juin 2008 à 06:14
Bonjour,
Je cherche à exporter le contenu q'une datagridview contenant le résultat d'une view sql server vers un fichier texte.
Je précise que j'ai fait au plus simple pour incorporer ce datagridview dans un form en faisant un glisser-déposer depuis la barre "source de données" => création automatique d'un DataSet, d'un TableAdapter & d'un BindingNavigator.
Je me demande si c'était la meilleure méthode ou si je devais incorporer un datarid/datagridview "vierge" que je chargerai via un événement type "choix par menu". Ce datagrid me sert à prévisualiser le résultat de la requête sql avant de lancer l'export en TXT via un bouton.
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 24 juin 2008 à 06:14
Tiens c'est le code que j'ai écris pour un de mes programmes:
/// <summary>
/// Export DGV datas to CSV format
/// </summary>
///
///
/// <returns>True on success, false upon failure</returns>
public static bool exportDGV(DataGridView dgv, string fileName)
{
try
{
using (StreamWriter sw = new StreamWriter(fileName))
{
//write column headers
string line = "";
for (int i = 0; i < dgv.Columns.Count; i++ )
{
if (dgv.Columns[i].Visible)
line += Tools.escapeCSVString(dgv.Columns[i].HeaderText) + ",";
}
line = line.TrimEnd(',');
sw.WriteLine(line);
//write data
for (int i = 0; i < dgv.Rows.Count; i++)
{
line = "";
for (int j = 0; j < dgv.Columns.Count; j++)
{
if (dgv.Columns[j].Visible)
{
line += Tools.escapeCSVString(dgv[j, i].FormattedValue.ToString()) + ",";
}
}
line = line.TrimEnd(',');
sw.WriteLine(line);
}
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// Escape a string to respect RFC 4180 standard
/// </summary>
///
/// <returns></returns>
public static string escapeCSVString(string s)
{
if (s.Contains(","))
{
s = s.Replace(""", """");
s = """ + s + """;
return s;
}
else
{
return s;
}
}