手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net DataGridView导出到Excel的三个方法[亲测]
asp.net DataGridView导出到Excel的三个方法[亲测]
摘要:#regionDataGridView数据显示到Excel//////打开Excel并将DataGridView控件中数据导出到Excel/...

#regionDataGridView数据显示到Excel

///<summary>

///打开Excel并将DataGridView控件中数据导出到Excel

///</summary>

///<paramname="dgv">DataGridView对象</param>

///<paramname="isShowExcle">是否显示Excel界面</param>

///<remarks>

///addcom"MicrosoftExcel11.0ObjectLibrary"

///usingExcel=Microsoft.Office.Interop.Excel;

///</remarks>

///<returns></returns>

publicboolDataGridviewShowToExcel(DataGridViewdgv,boolisShowExcle)

{

if(dgv.Rows.Count==0)

returnfalse;

//建立Excel对象

Excel.Applicationexcel=newExcel.Application();

excel.Application.Workbooks.Add(true);

excel.Visible=isShowExcle;

//生成字段名称

for(inti=0;i<dgv.ColumnCount;i++)

{

excel.Cells[1,i+1]=dgv.Columns[i].HeaderText;

}

//填充数据

for(inti=0;i<dgv.RowCount-1;i++)

{

for(intj=0;j<dgv.ColumnCount;j++)

{

if(dgv[j,i].ValueType==typeof(string))

{

excel.Cells[i+2,j+1]="'"+dgv[j,i].Value.ToString();

}

else

{

excel.Cells[i+2,j+1]=dgv[j,i].Value.ToString();

}

}

}

returntrue;

}

#endregion

#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

#regionDataGridView导出到Excel,有一定的判断性

///<summary>

///方法,导出DataGridView中的数据到Excel文件

///</summary>

///<remarks>

///addcom"MicrosoftExcel11.0ObjectLibrary"

///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+"nn导出完毕!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

#endregion

【asp.net DataGridView导出到Excel的三个方法[亲测]】相关文章:

asp.net gridview强制换行

asp.net动态添加js文件调用到网页的方法

asp.net读取excel文件的三种方法示例

asp.net中使用cookie传递参数的方法

Asp.net怎么导出Excel/Csv文本格式数据?

asp.net导出excel的简单方法

asp.net注册Javascript的方法

在asp.net中实现datagrid checkbox 全选的方法

asp.net下Request.QueryString取不到值的解决方法

asp.net跳转页面的三种方法比较

精品推荐
分类导航