DataGridView中数据导入Excel表
1.先添加"Microsoft.Office.Interop.Excel".NET组件的引用
2.创建一个ApplicationClass 对象,该对象位于Excel命名空间
3.使用ApplicationClass 对象添加一个工作簿
4.导出数据、保存文件,退出Excel.ApplicationClass
完整代码:
public void DataGridView2Excel(DataGridView dgv)
{
//行数必须大于0
if (dgv.Rows.Count <= 0)
{
MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//列数必须大于0
if(dgv.Columns.Count<=0)
{
MessageBox.Show("没有数据可供导出!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//行数不可以大于65536
if(dgv.Rows.Count>65536)
{
MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//列数不可以大于256
if(dgv.Columns.Count>256)
{
MessageBox.Show("数据记录数太多(做多不能超过256列),不能保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Excel files (*.xlsx)|*.xlsx";
dlg.FilterIndex = 0;
dlg.RestoreDirectory = true;
dlg.CreatePrompt = false;
dlg.Title = "保存为Excel文件";
if (dlg.ShowDialog() == DialogResult.OK)
{
////验证以dlg.FileName命名的文件是否存在,如果存在删除它
//FileInfo file=new FileInfo(dlg.FileName);
//if(file.Exists)
//{
// try
// {
// if(MessageBox.Show(dlg.FileName+"已经存在,是否删除?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.OK)
// {
// file.Delete();
// }
// else
// {
// return;
// }
// }
// catch(Exception ex)
// {
// MessageBox.Show(ex.Message,"删除失败",MessageBoxButtons.OK,MessageBoxIcon.Warning);
// return;
// }
//}
//创建一个ApplicationClass对象,该对象位于Excel命名空间
Excel.ApplicationClass ExcelApp = new Excel.ApplicationClass();
//使用ApplicationClass对象添加一个工作薄
ExcelApp.Application.Workbooks.Add(Type.Missing);
//设置工作薄列宽
//ExcelApp.Columns.ColumnWidth = 30;
//列宽自适应
ExcelApp.Columns.EntireColumn.AutoFit();
try
{
//向Excel中写入表格的表头
for (int i = 0; i < dgv.Columns.Count; i++)
{
ExcelApp.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
}
//向Excel中逐行逐列写入表格中的数据
for (int i = 0; i < dgv.Rows.Count; i++)
{
DataGridViewRow row = dgv.Rows[i];
for (int j = 0; j < row.Cells.Count; j++)
{
ExcelApp.Cells[i + 2, j + 1] = row.Cells[j].Value;
}
}
//保存到文件
ExcelApp.ActiveWorkbook.SaveCopyAs(dlg.FileName);
ExcelApp.ActiveWorkbook.Saved = true;
//退出Excel
//ExcelApp.Quit();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
finally
{
//关闭Excel应用,退出Excel
if(ExcelApp.Workbooks!=null)
{
ExcelApp.Workbooks.Close();
}
if(ExcelApp!=null)
{
ExcelApp.Quit();
}
}
MessageBox.Show(dlg.FileName+"\n\n导出完毕!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
{
//行数必须大于0
if (dgv.Rows.Count <= 0)
{
MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//列数必须大于0
if(dgv.Columns.Count<=0)
{
MessageBox.Show("没有数据可供导出!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//行数不可以大于65536
if(dgv.Rows.Count>65536)
{
MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//列数不可以大于256
if(dgv.Columns.Count>256)
{
MessageBox.Show("数据记录数太多(做多不能超过256列),不能保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Excel files (*.xlsx)|*.xlsx";
dlg.FilterIndex = 0;
dlg.RestoreDirectory = true;
dlg.CreatePrompt = false;
dlg.Title = "保存为Excel文件";
if (dlg.ShowDialog() == DialogResult.OK)
{
////验证以dlg.FileName命名的文件是否存在,如果存在删除它
//FileInfo file=new FileInfo(dlg.FileName);
//if(file.Exists)
//{
// try
// {
// if(MessageBox.Show(dlg.FileName+"已经存在,是否删除?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.OK)
// {
// file.Delete();
// }
// else
// {
// return;
// }
// }
// catch(Exception ex)
// {
// MessageBox.Show(ex.Message,"删除失败",MessageBoxButtons.OK,MessageBoxIcon.Warning);
// return;
// }
//}
//创建一个ApplicationClass对象,该对象位于Excel命名空间
Excel.ApplicationClass ExcelApp = new Excel.ApplicationClass();
//使用ApplicationClass对象添加一个工作薄
ExcelApp.Application.Workbooks.Add(Type.Missing);
//设置工作薄列宽
//ExcelApp.Columns.ColumnWidth = 30;
//列宽自适应
ExcelApp.Columns.EntireColumn.AutoFit();
try
{
//向Excel中写入表格的表头
for (int i = 0; i < dgv.Columns.Count; i++)
{
ExcelApp.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
}
//向Excel中逐行逐列写入表格中的数据
for (int i = 0; i < dgv.Rows.Count; i++)
{
DataGridViewRow row = dgv.Rows[i];
for (int j = 0; j < row.Cells.Count; j++)
{
ExcelApp.Cells[i + 2, j + 1] = row.Cells[j].Value;
}
}
//保存到文件
ExcelApp.ActiveWorkbook.SaveCopyAs(dlg.FileName);
ExcelApp.ActiveWorkbook.Saved = true;
//退出Excel
//ExcelApp.Quit();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
finally
{
//关闭Excel应用,退出Excel
if(ExcelApp.Workbooks!=null)
{
ExcelApp.Workbooks.Close();
}
if(ExcelApp!=null)
{
ExcelApp.Quit();
}
}
MessageBox.Show(dlg.FileName+"\n\n导出完毕!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
浙公网安备 33010602011771号