主题: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);
实现:程序已经实现了这个功能。但为了提高导出速度,做法是用文件流的方式把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);