Je récupère des données d'une table SQL afin de pouvoir afficher le résultat sur la page sous forme de table HTML. Plus tard, je dois pouvoir sauvegarder cette table en tant que fichier CSV.
Jusqu'à présent, j'ai trouvé comment récupérer les données et les renseigner dans un jeu de données à des fins d'affichage (qui fonctionne parfaitement) ...
string selectQuery = "SELECT Name, ProductNumber, ListPrice FROM Poduction.Product";
// Establish the connection to the SQL database
SqlConnection conn = ConnectionManager.GetConnection();
conn.Open();
// Connect to the SQL database using the above query to get all the data from table.
SqlDataAdapter myCommand = new SqlDataAdapter(selectQuery, conn);
// Create and fill a DataSet.
DataSet ds = new DataSet();
myCommand.Fill(ds);
et comment les enregistrer dans un fichier CSV à l'aide du code suivant, provenant de: http://www.evontech.com/login/topic/1983.html
private void exportDataTableToCsv(DataTable formattedDataTable, string filename)
{
DataTable toExcel = formattedDataTable.Copy();
HttpContext context = HttpContext.Current;
context.Response.Clear();
foreach (DataColumn column in toExcel.Columns)
{
context.Response.Write(column.ColumnName + ",");
}
context.Response.Write(Environment.NewLine);
foreach (DataRow row in toExcel.Rows)
{
for (int i = 0; i < toExcel.Columns.Count; i++)
{
context.Response.Write(row.ToString().Replace(",", string.Empty) + ",");
}
context.Response.Write(Environment.NewLine);
}
context.Response.ContentType = "text/csv";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ".csv");
context.Response.End();
}
Maintenant, mon problème est de savoir comment convertir cette DataSet
en DataTable
? J'ai essayé la façon décrite ici avec [~ # ~] non [~ # ~] chance: http: //www.ezineasp .net/post/ASP-Net-C-sharp-Convert-DataSet-to-DataTable.aspx
Quelqu'un peut-il m'aider?
Un DataSet
déjà contientDataTables
. Vous pouvez simplement utiliser:
DataTable firstTable = dataSet.Tables[0];
ou par nom:
DataTable customerTable = dataSet.Tables["Customer"];
Notez que vous devez avoir les instructions using
pour votre code SQL, afin de vous assurer que la connexion est correctement mise au rebut:
using (SqlConnection conn = ...)
{
// Code here...
}
DataSet est une collection de DataTables .... vous pouvez obtenir le datatable de DataSet comme ci-dessous.
//here ds is dataset
DatTable dt = ds.Table[0]; /// table of dataset
Voici ma solution:
DataTable datatable = (DataTable)dataset.datatablename;