Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

loop through datareader and export to csv file, use file dialog to save on users desktop

Posted on 2007-11-21
10
3,368 Views
Last Modified: 2008-05-08
I have a datareader as follows

 while (thisReader.Read())
                {
                    strvalues += (string)thisReader["FirstName"].ToString() + ", " + (string)thisReader["LastName"].ToString() + ", ";
                    strvalues += (string)thisReader["Address1"].ToString() + ", " + (string)thisReader["PostCode"].ToString() + ", " + (string)thisReader["Country"].ToString() + ", ";


                    if (strvalues.Length > 2)
                        strvalues = strvalues.Substring(0, strvalues.Length - 2) + "\n";                                
                   
                }


Now how can I amend the above code so it produces a valid CSV or EXCEL file.  Also I need a dialog box that the user can select to save the file to the desk top
0
Comment
Question by:mugsey
10 Comments
 
LVL 16

Expert Comment

by:SQL_SERVER_DBA
ID: 20329145
0
 
LVL 27

Accepted Solution

by:
VBRocks earned 500 total points
ID: 20329390
Here is how you can do it:

            DataTable table = new DataTable();
            table.Load(thisReader);

            SaveFileDialog diag = new SaveFileDialog();
            diag.DefaultExt = "csv";
            diag.Filter = "Comma Delimited Files (*.csv)|*.csv";
            DialogResult result = diag.ShowDialog();
            string delimiter = "";

            if (result == DialogResult.OK)
            {
                string path = diag.FileName;

                System.IO.StreamWriter writer = new System.IO.StreamWriter(path);
                foreach (DataRow row in table.Rows)
                {
                    delimiter = "";

                    foreach (DataColumn col in table.Columns)
                    {
                        writer.Write(delimiter + row[col].ToString());
                        delimiter = ",";
                    }
                    writer.Write(System.Environment.NewLine);
                   
                }

                writer.Close();
                writer.Dispose();
            }

0
 

Author Comment

by:mugsey
ID: 20330483
OK gang, thanks I will have a go tomorrow when I am back in work.  Thanks for your comments
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:mugsey
ID: 20330867
Actually I have a datareader not a gridview, can I do this with a datareader?
0
 
LVL 27

Expert Comment

by:VBRocks
ID: 20330886
Yes, at the very top are 2 lines of code that load your reader into a DataTable:

            DataTable table = new DataTable();
            table.Load(thisReader);

            'Etc...

0
 

Author Comment

by:mugsey
ID: 20330918
VBRocks you know your stuff!!!!!!!!!!!!!!!!!!!!!!

Will update tomorrow if that is OK, however you will certainly get points.  Thanks again for your great comments
0
 

Author Comment

by:mugsey
ID: 20333593
Thanks but how can I do this

SaveFileDialog diag = new SaveFileDialog();

in ASP.NET

Is this not for windows forms?
0
 
LVL 27

Expert Comment

by:VBRocks
ID: 20350490
You're right mugsey...  That is a windows form control.  And I"m not sure how to do that with ASP.NET.

My apologies.  :(



0
 

Author Comment

by:mugsey
ID: 20364618
No problem, I will award you the points for you contributions!
0
 

Expert Comment

by:PhilTrack
ID: 31793849
Can anyone append info on how to include the Headers in the CSV export?
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question