首先犹豫要保存文件,则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保证安全