回 帖 发 新 帖 刷新版面

主题:dataGridView数据导出到csv文件如何在程序里面实现另存为Excel文件

目的:为了实现把dataGridView里面的数据导出到Excel文件里.
实现:程序已经实现了这个功能。但为了提高导出速度,做法是用文件流的方式把dataGridView里的数据导出到一个csv文件。csv文件可以用Excel打开.
问题:导出的csv文件(也可以把后缀名改为xls)修改后保存会弹出一个对话框,也就是不能直接保存,需要另存为一个xls文件才可以正常保存.
求助:可不可以在程序中控制导出的csv文件直接另存为Excel文件.谢谢!

附导出到csv文件的代码:
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Excel文件(*.csv)|*.csv|所有文件(*.*)|*.*";
// sfd.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*";
sfd.FilterIndex = 1;
sfd.Title = "导出到Excel";
sfd.InitialDirectory = Directory.GetCurrentDirectory();   
sfd.RestoreDirectory = false;
                
if (sfd.ShowDialog() == DialogResult.OK)
{                  
    FileStream fs = new FileStream(sfd.FileName, FileMode.Create);
    StreamWriter sw = new StreamWriter(fs, Encoding.Unicode);
                    
    // 写标题
    string title = "";
    for (int i = 0; i < dataGridView.Columns.Count; i++)
    {
         title = dataGridView.Columns[i].HeaderText;
         sw.Write(title);
         sw.Write("\t");
    }                    
    sw.WriteLine("");     //防止数据的第一行数据显示不出来
    // 写内容                    
    for (int i = 0; i < dataGridView.Rows.Count; i++)
    {                        
         for (int j = 0; j < dataGridView.Columns.Count; j++)
         {
            sw.Write(dataGridView.Rows  [i].Cellsj].Value);                                                                                     
            sw.Write("\t");
          }                          
        sw.WriteLine("");
        sw.Flush();
     }
                    
        fs.Close();

        this.Cursor = Cursors.Default;
        MessageBox.Show("导出数据成功!", "提示", MessageBoxButtons.OK,               MessageBoxIcon.Asterisk); 



回复列表 (共1个回复)

沙发

呵呵~
这样的话可以尝试当写入文件后遍历整个窗口,捕捉提示对话框,然后让程序按下确定键。
自己感觉写出来的东西都有点像木马了。。呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册