首先犹豫要保存文件,则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
至此文件保存对话框已经设置完毕,现在需要对文件进行创建,并写入内容
首先需要Office 的COM,在命名空间加上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保证安全