最近又把以前做了一个项目《教务系统中成绩数据迁移》翻了出来,应客户的要求,在导出毕业生成绩登记表时,以前是一个一个学生的导出,现在希望能够整个班级的导出。把以前写的有关导出Excel的代码看了下,觉得有必要写出来,一是总结,二是将来再用时,不要从头再找这些代码了。
在C#中操作Excel,先要添加对Office类库的引用,是COM+类库,名称为Microsoft Office 11.0 Object Library(对应Office 2003).
下面是一小段测试代码(为设置格式方便,事先做好一个模板文件):
Excel.ApplicationClass excelApp
=
null
;
Excel.Workbook workBook = null ;
excelApp = new Excel.ApplicationClass();
workBook = excelApp.Workbooks.Open(destFilename, // 需要打开的Excel文件
Type.Missing,Type.Missing,Type.Missing,Type.Missing,
Type.Missing,Type.Missing,Type.Missing,Type.Missing,
Type.Missing,Type.Missing,Type.Missing,Type.Missing,
Type.Missing,Type.Missing);
excelApp.Cells[ 1 , 1 ] = " 测试成功! " ;
Excel.Workbook workBook = null ;
excelApp = new Excel.ApplicationClass();
workBook = excelApp.Workbooks.Open(destFilename, // 需要打开的Excel文件
Type.Missing,Type.Missing,Type.Missing,Type.Missing,
Type.Missing,Type.Missing,Type.Missing,Type.Missing,
Type.Missing,Type.Missing,Type.Missing,Type.Missing,
Type.Missing,Type.Missing);
excelApp.Cells[ 1 , 1 ] = " 测试成功! " ;
现在,需要在一个WorkBook中要连续存放一个班的学生成绩总表,需要,就利用第一个WorkSheet,不断的Copy:
Excel.Worksheet ws
=
(Excel.Worksheet)workBook.Worksheets[
1
];
//
获取第一个工作表
ws.Copy((Excel.Worksheet)workBook.Sheets[ 1 ],Type.Missing); // 复制到第1个工作表之前
((Excel.Worksheet)workBook.Worksheets[ 1 ]).Name = sheetname; // 修改工作表名为sheetname
ws.Copy((Excel.Worksheet)workBook.Sheets[ 1 ],Type.Missing); // 复制到第1个工作表之前
((Excel.Worksheet)workBook.Worksheets[ 1 ]).Name = sheetname; // 修改工作表名为sheetname
暂且就写到这儿。