Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2007-11-21
10
Medium Priority
?
3,377 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 2000 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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Is your data getting by on basic protection measures? In today’s climate of debilitating malware and ransomware—like WannaCry—that may not be enough. You need to establish more than basics, like a recovery plan that protects both data and endpoints.…
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …
Suggested Courses

916 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