Winform中Datagird数据输出到Excel表格,C# .NET

来源:互联网 发布:苹果5怎么用移动3g网络 编辑:程序博客网 时间:2024/05/09 12:48


首先犹豫要保存文件,则savefiledialog控件是必不可少的,则必须在一切操作之前,进行savefiledialog控件的属性设置,通常设置的属性有:

DefaultExt  默认后缀名

Filter       后缀名列表(|)

InitialDirectory默认文件保存路径,使用System.IO中的类Directory的方法GetCurrentDirectory()获取当前工作目录的路径

同时处理,文件保存对话框点击取消的事件处理,对DialogResult进行处理。

 

至此,还应该处理,同名是,替换原文件的处理,并在此获得文件路径。

String filename = file.FileName;//file为savefiledialog对象FileInfo info = new  FileInfo(filename);if(filename.Trim()==””)       return;//注意文件名不能空


文件如果存在,将原文件删除:

if(info.Exits)try{info.Delete();}catch(Exception ex){       MessageBox.Show(ex.ToString());       return;}

 

设置完后,我们需要对数据大小进行检索,防止无法存储

计算出行总数,列总数,该变量在写入数据时,需要定位行列。判断行列总数时,保证列号0<column<=255,0<row<=65536

 

 

 

至此文件保存对话框已经设置完毕,现在需要对文件进行创建,并写入内容

首先需要OfficeCOM,在命名空间加上Excel=Microsoft.Office.Interop.Excel;

先创建一个excel进程,再在进程创建一个工作簿workbook,再创建一个表,最后写入内容到表中即可。

//创建excel应用Excel.Application excel=null;//工作簿Excel.Workbook workbook=null;//表Excel.Worksheet sheet=null;//使用try尝试去对这些变量进行初始化try{       excel = new Excel.Application();       workbook = excel.Workbooks.Add(Missing.Value);//此处需要System.Reflection命名空间支持       sheet = (Excel.Worksheet)workbook.ActiveSheet;       //变量初始化结束       //写入数据       //先写入表头       int firstColumn=1;       for(int i=0;i<columncount;i++)//columncount为列总数{       if(this.datagridview1.Columns[i].Visiable==true){       excel.Cells[1,firsColumn] = this.datagridview1.Columns[i].HeaderText;//此处注意,在excel单元格中下标从1开始       firstColumn++;}}//写入内容,双重循环for(int i = 0; i<rowcount;i++){       firstColumn=1;for(int j=0 ;j<columncount;j++){If(this.datagridview1.Column[j].Visiable==true){                    excel.Cells[row+2,firstColumn]=this.datagridview1.Rows[i].Cells[j].Value.ToString().Trim();firstColumn++;}}}}catch{       MessageBox.Show(“”,””);}MessageBox.Show(filename+”导出成功”);

至此,就保存完了

写代码的过程中,多使用try catch异常处理,在捕获异常后,要及时对进程关闭,并且置为null保证安全

 

0 0
原创粉丝点击