winform应用使用DataGridView数据导出到Excel.docx
- 文档编号:4279879
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:9
- 大小:16.23KB
winform应用使用DataGridView数据导出到Excel.docx
《winform应用使用DataGridView数据导出到Excel.docx》由会员分享,可在线阅读,更多相关《winform应用使用DataGridView数据导出到Excel.docx(9页珍藏版)》请在冰豆网上搜索。
winform应用使用DataGridView数据导出到Excel
winform应用使用DataGridView数据导出到Excel
,下面是DataGridView到处到Excel的两种方法,附有第二种的工程代码,最近项目使用到这块,就记下来了,其中第一种效率较第二种较高,但是没有第二种容易设置格式:
Code
DateGridView导出到csv格式的Excel#regionDateGridView导出到csv格式的Excel
/**////<summary>
///常用方法,列之间加\t,一行一行输出,此文件其实是csv文件,不过默认可以当成Excel打开。
///</summary>
///<remarks>
///usingSystem.IO;
///</remarks>
///<paramname="dgv"></param>
privatevoidDataGridViewToExcel(DataGridViewdgv)
{
SaveFileDialogdlg=newSaveFileDialog();
dlg.Filter="Execlfiles(*.xls)|*.xls";
dlg.FilterIndex=0;
dlg.RestoreDirectory=true;
dlg.CreatePrompt=true;
dlg.Title="保存为Excel文件";
if(dlg.ShowDialog()==DialogResult.OK)
{
StreammyStream;
myStream=dlg.OpenFile();
StreamWritersw=newStreamWriter(myStream,System.Text.Encoding.GetEncoding(-0));
stringcolumnTitle="";
try
{
//写入列标题
for(inti=0;i<dgv.ColumnCount;i++)
{
if(i>0)
{
columnTitle+="\t";
}
columnTitle+=dgv.Columns[i].HeaderText;
}
sw.WriteLine(columnTitle);
//写入列内容
for(intj=0;j<dgv.Rows.Count;j++)
{
stringcolumnValue="";
for(intk=0;k<dgv.Columns.Count;k++)
{
if(k>0)
{
columnValue+="\t";
}
if(dgv.Rows[j].Cells[k].Value==null)
columnValue+="";
else
columnValue+=dgv.Rows[j].Cells[k].Value.ToString().Trim();
}
sw.WriteLine(columnValue);
}
sw.Close();
myStream.Close();
}
catch(Exceptione)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
}
#endregion
DataGridView导出到Excel,有一定的判断性#regionDataGridView导出到Excel,有一定的判断性
/**////<summary>
///方法,导出DataGridView中的数据到Excel文件
///</summary>
///<remarks>
///addcom"MicrosoftExcel0ObjectLibrary"
///usingExcel=Microsoft.Office.Interop.Excel;
///usingSystem.Reflection;
///</remarks>
///<paramname="dgv">DataGridView</param>
publicstaticvoidDataGridViewToExcel(DataGridViewdgv)
{
验证可操作性#region验证可操作性
//申明保存对话框
SaveFileDialogdlg=newSaveFileDialog();
//默然文件后缀
dlg.DefaultExt="xls";
//文件后缀列表
dlg.Filter="EXCEL文件(*.XLS)|*.xls";
//默然路径是系统当前路径
dlg.InitialDirectory=Directory.GetCurrentDirectory();
//打开保存对话框
if(dlg.ShowDialog()==DialogResult.Cancel)return;
//返回文件路径
stringfileNameString=dlg.FileName;
//验证strFileName是否为空或值无效
if(fileNameString.Trim()=="")
{return;}
//定义表格内数据的行数和列数
introwscount=dgv.Rows.Count;
intcolscount=dgv.Columns.Count;
//行数必须大于0
if(rowscount<=0)
{
MessageBox.Show("没有数据可供保存","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//列数必须大于0
if(colscount<=0)
{
MessageBox.Show("没有数据可供保存","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//行数不可以大于65536
if(rowscount>65536)
{
MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//列数不可以大于255
if(colscount>255)
{
MessageBox.Show("数据记录行数太多,不能保存","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//验证以fileNameString命名的文件是否存在,如果存在删除它
FileInfofile=newFileInfo(fileNameString);
if(file.Exists)
{
try
{
file.Delete();
}
catch(Exceptionerror)
{
MessageBox.Show(error.Message,"删除失败",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
}
#endregion
Excel.ApplicationobjExcel=null;
Excel.WorkbookobjWorkbook=null;
Excel.Worksheetobjsheet=null;
try
{
//申明对象
objExcel=newMicrosoft.Office.Interop.Excel.Application();
objWorkbook=objExcel.Workbooks.Add(Missing.Value);
objsheet=(Excel.Worksheet)objWorkbook.ActiveSheet;
//设置EXCEL不可见
objExcel.Visible=false;
//向Excel中写入表格的表头
intdisplayColumnsCount=1;
for(inti=0;i<=dgv.ColumnCount-1;i++)
{
if(dgv.Columns[i].Visible==true)
{
objExcel.Cells[1,displayColumnsCount]=dgv.Columns[i].HeaderText.Trim();
displayColumnsCount++;
}
}
//设置进度条
//tempProgressBar.Refresh();
//tempProgressBar.Visible=true;
//tempProgressBar.Minimum=1;
//tempProgressBar.Maximum=dgv.RowCount;
//tempProgressBar.Step=1;
//向Excel中逐行逐列写入表格中的数据
for(introw=0;row<=dgv.RowCount-1;row++)
{
//tempProgressBar.PerformStep();
displayColumnsCount=1;
for(intcol=0;col<colscount;col++)
{
if(dgv.Columns[col].Visible==true)
{
try
{
objExcel.Cells[row+2,displayColumnsCount]=dgv.Rows[row].Cells[col].Value.ToString().Trim();
displayColumnsCount++;
}
catch(Exception)
{
}
}
}
}
//隐藏进度条
//tempProgressBar.Visible=false;
//保存文件
objWorkbook.SaveAs(fileNameString,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Excel.XlSaveAsAccessMode.xlShared,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value);
}
catch(Exceptionerror)
{
MessageBox.Show(error.Message,"警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
finally
{
//关闭Excel应用
if(objWorkbook!
=null)objWorkbook.Close(Missing.Value,Missing.Value,Missing.Value);
if(objExcel.Workbooks!
=null)objExcel.Workbooks.Close();
if(objExcel!
=null)objExcel.Quit();
objsheet=null;
objWorkbook=null;
objExcel=null;
}
MessageBox.Show(fileNameString+"\n\n导出完毕!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
#endregion
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- winform 应用 使用 DataGridView 数据 导出 Excel