请选择 进入手机版 | 继续访问电脑版

无忧编程_ASP.NET  / C# / PHP 程序员的软件世界

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 763|回复: 0

C#中导出Excel的单元格属性设置(非常实用)

[复制链接]

374

主题

405

帖子

1676

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1676
发表于 2018-5-16 14:37:16 | 显示全部楼层 |阅读模式
C#中导出Excel的单元格属性设置(非常实用)

A、单元格格式设置,默认为常规类型;Excel

Excel.Range r =mySheet.get_Range(mySheet.Cells[1,1],mySheet.Cells[DT.Rows.Count + 2,DT.Columns.Count - 3]);

r.NumberFormat="@"; //设置单元格格式为文本类型,文本类型可设置上下标

r.NumberForma="0.00_ "//设置单元格格式为数值类型,小数点后2位

r.NumberForma="¥#,##0.00;¥-#,##0.00"//设设置单元格格式为货币类型,小数点后2位

r.NumberForma=_"_ ¥*#,##0.00_;_ ¥*-#,##0.00_ ;_ ¥*""-""??_;_ @_ "//置单元格格式为会计专用类型,小数点后2位

r.NumberForma="yyyy-m-d"//设置单元格格式为日期类型

r.NumberForma="[$-F400]h:mm:ss AM/PM"//设置单元格格式为时间类型

r.NumberForma="0.00%"//设置单元格格式为百分比类型,小数点后2位

r.NumberForma="# ?/?"设置单元格格式为分数类型,分母为一位数

r.NumberForma="0.00E+00"//设置单元格格式为科学技术类型,小数位数为2

r.NumberForma="000000"//设置单元格格式为特殊类型

B、上下标格式的控制;

mySheet.get_Range(mySheet.Cells[i+3, DT.Columns.Count - 3],mySheet.Cells[i + 3, DT.Columns.Count -3]).get_Characters(a.Length+ 1,b.Length).Font.Subscript =true;//控制输出样式为下标

mySheet.get_Range(mySheet.Cells[i+3, DT.Columns.Count - 3],mySheet.Cells[i + 3, DT.Columns.Count-3]).get_Characters(a.Length + b.Length+ 1, c.Length).Font.Superscript =true; //控制输出样式为上标

C、单元格水平垂直对齐方式;

//单元格水平,垂直居中

r.HorizontalAlignment=Excel.XlHAlign.xlHAlignCenter;

r.VerticalAlignment=Excel.XlVAlign.xlVAlignCenter;

上面代码中,枚举XLHAlign的值还有:

// 右对齐

xlHAlignRight,

// 左对齐.

xlHAlignLeft,

// 两端对齐.

xlHAlignJustify,

// 分散对齐(缩进)

xlHAlignDistributed,

// 居中对齐

xlHAlignCenter,

// 依照数据类型对齐,常规

xlHAlignGeneral,

// 填充

xlHAlignFill,

// 跨列对齐.

xlHAlignCenterAcrossSelection=7,

枚举XLVAlign的值还有:

// 靠上对齐

xlVAlignTop,

//两端对齐.

xlVAlignJustify=-4130,

//分散对齐.

xlVAlignDistributed,

//居中对齐.

xlVAlignCenter,

//靠下对齐.

xlVAlignBottom=-4107,

D、 单元格边框设置;

//设置边框

Excel.Range r =mySheet.get_Range(mySheet.Cells[1,1],mySheet.Cells[DT.Rows.Count + 2,DT.Columns.Count - 3]);

r.Borders.LineStyle=Excel.XlLineStyle.xlContinuous;

枚举XlLineStyle中还有下面线形:

//没边框线

xlLineStyleNone,

//双线.

xlDouble,

//点状线.

xlDot,

//虚线.

xlDash,

//连续线.

xlContinuous,

//点线交互型

xlDashDot,

//两点一线型

xlDashDotDot,

//斜线.

xlSlantDashDot,

E、单元格合并

用get_Range方法获取要合并的单元格,再设置MergeCells属性的值进行合并。

代码:

//合并单元格

myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,4]).MergeCells =true;

F、字体设置

先用get_Range方法选中要设置字体的某个单元格或者或者直接用get_Characters方法直接选中要设置的字符进行设置;

代码:

//加粗字体

myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Bold =true;

//设置字体大小

myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Size=16;

//设置字体的颜色

myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.ColorIndex = 3;

//设置字体

myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Name ="隶书";

//设置成斜体

myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Italic =true;

//设置下划线

myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Underline =true;

G、冻结行列

用get_Range方法获取单元格,再设置其Freezepanes属性为true,就把该单元格右上方的行和列都冻结了,取消冻结将其值设为false即可。

//冻结行列

myExcel.get_Range(myExcel.Cells[3,1],myExcel.Cells[3,1]).Activate();

myExcel.ActiveWindow.FreezePanes=true;

上行的红色地方经本人测试是错误的,正确的应该是:

xlApp.ActiveWindow.FreezePanes = true;

H、 公式输入栏的隐藏

//设置是否显示Excel公式输入栏,默认为true

myExcel.DisplayFormulaBar=false;

I、 列标题与行标题的隐藏

//设置是否显示行和列的标题,默认为true

myExcel.ActiveWindow.DisplayHeadings=false;

J、网格的隐藏

//设置是否显示网格,默认为true

myExcel.ActiveWindow.DisplayGridlines=false;

K、 水平、垂直滚动条的隐藏

//设置是否显示水平滚动条

myExcel.ActiveWindow.DisplayHorizontalScrollBar=false;

//设置是否显示垂直滚动条

myExcel.ActiveWindow.DisplayVerticalScrollBar=false;

L、页的隐藏Sheet

//设置是否显示Sheet页

myExcel.ActiveWindow.DisplayWorkbookTabs=false;

M、 电子表格外观控制:

Sheet.DisplayToolbar= false;//是否显示工具栏默认值为 true

Sheet.DisplayOfficeLogo= false;// 取消显示Office图标

Sheet.DisplayColumnHeadings= false;// 是否显示列标题,默认是true

Sheet.DisplayRowHeadings= false;// 是否显示行标题,默认是true

Sheet.DisplayHorizontalScrollBar= false;// 是否显示水平滚动条,默认为true

Sheet.DisplayVerticalScrollBar= false;// 是否显示垂直滚动条,默认为true

Sheet.DisplayGridlines= false;// 电子表格是否显示网格,默认为true

for (int i = 1; i < DT.Columns.Count- 2; i += 2)

{

Sheet.get_Range(Sheet.Rows.Cells[i,1],Sheet.Rows.Cells[i, DT.Columns.Count - 3]).Interior.set_ColorIndex(2); //设置行的颜色

}

worksheet.Cells[1, 1]= "Excel单元格赋值";//Excel单元格赋值
range.Font.Size = 15; //设置字体大小
range.Font.Underline=true; //设置字体是否有下划线
range.Font.Name="黑体";设置字体的种类
range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //设置字体在单元格内的对其方式
range.ColumnWidth=15; //设置单元格的宽度
range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb();//设置单元格的背景色
range.Borders.LineStyle=1; //设置单元格边框的粗细
range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb());//给单元格加边框
range.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle=Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone;//设置单元格上边框为无边框
range.EntireColumn.AutoFit(); //自动调整列宽
Range.HorizontalAlignment= xlCenter; // 文本水平居中方式
Range.VerticalAlignment= xlCenter //文本垂直居中方式
Range.WrapText=true; //文本自动换行
Range.Interior.ColorIndex=39; //填充颜色为淡紫色
Range.Font.Color=clBlue; //字体颜色
xlsApp.DisplayAlerts=false; //保存Excel的时候,不弹出是否保存的窗口直接进行保存

向Excel中填充数据,并保存为临时文件

Excel.ApplicationmyExcel =newExcel.Application();

//打开模板文件

myExcel.Application.Workbooks.Open(mode.FullName,missing,missing,missing, missing, missing, missing, missing, missing,missing, missing,missing,missing, missing, missing);

//选中有数据的Cells

Excel.WorkbookmyBook = myExcel.Workbooks[1];

Excel.WorksheetmySheet = (Excel.Worksheet)myBook.Worksheets[1];

Excel.Ranger = mySheet.get_Range(mySheet.Cells[1,1],mySheet.Cells[DT.Rows.Count + 2,DT.Columns.Count - 3]);

r.Select();

//不单独显示Excel,最后在IE中显示

myExcel.Visible=false;

//第一行为报表的标题

myExcel.Cells[1,1]= "用模板导出的报表";

//逐行写入数据,数组中第一行为报表的列标题

for (int i = 0; i <DT.Columns.Count - 3; i++)

{

myExcel.Cells[2,1+ i] =DT.Columns.Caption; ;

}

//在当前目录下指定一个临时文件

string FileName =Server.MapPath("~")+"""Temp.xls";

if (File.Exists(FileName))

{

File.Delete(FileName);

}

myExcel.Save(FileName);

mySheet.Cells.Clear();

//设置不出现保存提示框

myBook.Saved=true;

myExcel.Application.Workbooks.Close();

本文来自:https://blog.csdn.net/wangqifei521/article/details/23444919


windows .net(C#+MSSQL) linux(php+mysql)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|软件编程 ( 鄂ICP备11006601号鄂公网安备 42011102001337号 |

GMT+8, 2018-11-14 15:40 , Processed in 0.170475 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表