我这里说3种方法 一种数据流 有点速度比较快,缺点列表宽度不适配 日期长的直接显示##### 拉宽了才会显示正常。
//1导出 excel 数据流方式
public static void ExcelBtnLiu(DataGridView dgvUseName, string name)
{
if (dgvUseName.Rows.Count == 0)
{
MessageBox.Show("请您检查是否有数据导出", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//提示用户保存文件位置
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Excel files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出Excel文件到";
saveFileDialog.FileName = name;
DialogResult result = saveFileDialog.ShowDialog();
if (result == DialogResult.Cancel) return;//点击取消
//打开文件流 开始写入
Stream myStream = saveFileDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//写标题
for (int i = 0; i < dgvUseName.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dgvUseName.Columns[i].HeaderText;
}
sw.WriteLine(str);
//写内容
for (int j = 0; j < dgvUseName.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dgvUseName.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
if (dgvUseName.Rows[j].Cells[k].Value != null)
{
tempStr += dgvUseName.Rows[j].Cells[k].Value.ToString();
}
tempStr += "";
}
sw.WriteLine(tempStr);
}
MessageBox.Show("成功导出Excel表", "导出提示");
sw.Close();
myStream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
第二种 excel表的方式 这里需要引用excel 而且你的电脑上要安装office 这里说一下特别搞笑 我电脑有wps 没有安装office 所以 引用using Excel = Microsoft.Office.Interop.Excel; 就出错,然后我安装了office。 结果无论用哪个打开excel都特别慢,既然不用wps那我就卸载了,结果项目打不出来excel了,Office注册表出问题,com组件调用Queryinterface因以下错误而失败:库没有注册,我又重新装回了wps,然后没问题了打开也快了。
//DataGridView 导出excel
public static void print(DataGridView dataGridView1,string name)
{
if (dataGridView1.Rows.Count == 0)
{
MessageBox.Show("请您检查是否有数据导出", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//导出到execl
try
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Excel files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;