我们经常需要把数据导出到Excel,导出过程中很可能需要对导出后的Excel格式进行控制,这里我谨以简单的画斜线为例对C#如何导出Excel&&Excel格式进行简单控制做一个简单的记录
首先我一开始并不知道如何用C#实现在Excel中画斜线,而Excel里面自带的宏帮了我大忙,我们可以充分利用这个宏来记录下操作的源代码,首先录制宏,然后在Excel中做自己需要的动作(我这里就做了画斜线),停止录制后点查看宏可查看到刚刚所有动作的源代码,如图示
录制宏
动作(画斜线)
停止录制
有了这些源代码,如何用C#实现就有思路了,源代码如下
#region 将方法中用到的所有Excel变量声明在方法最开始,以便最后统一回收
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
Excel.Workbook obook = null;
Excel.Worksheet oSheet = null;
Excel.Range range = null;
#endregion
obook = oExcel.Workbooks.Add(true);
oSheet = (Excel.Worksheet)obook.Worksheets[1];
//取得“A1”单元格
range = (Excel.Range)oSheet.get_Range("A1", System.Reflection.Missing.Value);
//可以取一个区域范围,注意这里的Index是从1开始,而不是0
//range = (Excel.Range)oSheet.get_Range(oSheet.Cells[1, 1], oSheet.Cells[1, col]);
range.HorizontalAlignment = Excel.Constants.xlGeneral;//默认对齐
range.VerticalAlignment = Excel.Constants.xlCenter;//居中对齐
range.Font.Name = "Arial"; //字体
range.Font.Size = 12;
range.Font.Bold = true;
range.Font.Color = ColorTranslator.ToOle(Color.White); //注意到Excel的颜色都要转换一下
range.ColumnWidth = 40; //列宽
range.RowHeight = 100; //行高
range.Interior.Color = ColorTranslator.ToOle(Color.FromArgb(79, 129, 189));//背景
range.Borders[Excel.XlBordersIndex.xlDiagonalDown].LineStyle = Excel.XlLineStyle.xlContinuous; //斜线,由Excel的宏代码翻译而来
oSheet.Cells[1, 1] = " 交叉列名2\r\n\r\n\r\n交叉列名1"; //添加文本
obook.SaveCopyAs(@"D:\Diagonal.xls");//保存到指定文件
obook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
// 调用ReleaseComObject方法释放方法中用到的所有的Excel 变量
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(obook);
oExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel);
GC.Collect();
生成Excel后的效果