asp.net OpenXML 设置Excel单元格格式

一、设置单元格字体

Stylesheet中存储字体集的Class是Fonts,设置字体的class是Font。

首先,定义一个有三种字体的字体集:

 代码如下 复制代码

stylesheet.Fonts = new Fonts()
 {      
         Count = (UInt32Value)3U          
};

 

然后,定义几种字体,并将该字体添加到Fonts中:

 代码如下 复制代码

//fontId 从0开始,这里的fontId=0,

 Font fontCalibri = new Font(new FontSize() { Val = 11D },
                             new FontName() { Val = "Calibri" },
                             new FontFamily() { Val = 2 },
                             new FontScheme() { Val = FontSchemeValues.Minor });

stylesheet.Fonts.Append(fontCalibri );

//另2种字体的这里略去,可以仿照上述字体定义。。。

 

二、设置单元格边框

单元格的边框是定义在对象Borders中,同设置字体一样,先创建指定大小的Borders对象,然后将具体的Border添加到边框集中,borderId从0开始。代码如下:

 代码如下 复制代码

stylesheet.Borders = new Borders()
             {
                 Count = (UInt32Value)2U
             };
 
             //borderID=0
             Border borderDefault = new Border(new LeftBorder(), new RightBorder(), new TopBorder() { }, new BottomBorder(), new DiagonalBorder());
             stylesheet.Borders.Append(borderDefault);
 
             //borderID=1
             Border borderContent = new Border(
                new LeftBorder(new Color() { Auto = true }) { Style = BorderStyleValues.Thin },
                 new RightBorder(new Color() { Auto = true }) { Style = BorderStyleValues.Thin },
                 new TopBorder(new Color() { Auto = true }) { Style = BorderStyleValues.Thin },
                 new BottomBorder(new Color() { Auto = true }) { Style = BorderStyleValues.Thin },
                 new DiagonalBorder()
                 );
             stylesheet.Borders.Append(borderContent);

 

三、设置单元格的填充色

同上述设置字体和边框一样,设置填充色也是需要先设置填充色的集合,然后再将具体的填充色添加到填充色集合中。但是这里需要注意的在Fills的fillid=0和fillId=1的位置均是系统默认的。fillId=0的填充色是None,fillId=1的填充色是Gray125,但需要自定义填充色时,必须从fillId=2开始定义,就是说在需要自定义时候需要先定义这两种填充色。(是通过自己反复测试发现的,被折腾很久)。代码如下:

 代码如下 复制代码

 

           //fillId,0总是None,1总是gray125,自定义的从fillid =2开始
            stylesheet.Fills = new Fills()
            {
                 Count = (UInt32Value)3U
            };
 
             //fillid=0
             Fill fillDefault = new Fill(new PatternFill() { PatternType = PatternValues.None });
             stylesheet.Fills.Append(fillDefault);
 
            //fillid=1
            Fill fillGray = new Fill();
            PatternFill patternFillGray = new PatternFill()
             {
                 PatternType = PatternValues.Gray125
             };
             fillGray.Append(patternFillGray);
             stylesheet.Fills.Append(fillGray);
 
             //fillid=2
             Fill fillYellow = new Fill();
             PatternFill patternFillYellow = new PatternFill(new ForegroundColor() { Rgb = new HexBinaryValue() { Value = "FFFFFF00" } })
             {
                 PatternType = PatternValues.Solid
             };
            fillYellow.Append(patternFillYellow);
             stylesheet.Fills.Append(fillYellow);
 
             stylesheet.Borders = new Borders()
             {
                 Count = (UInt32Value)2U
             };

 

四、定义CellFormats

同之前描述的一样,定义完CellFormat后,将其添加到单元格式集CellFormats中。

需要提及的是,不论Fonts,Borders,Fills还是CellFormats对象,他们都是Stylesheet的属性。如果要让设置的字体,边框等有效,还需将CellFormat同Font,Border,Fill关联起来,这就需要上述说的FontId,BorderId和FillId了(id的顺序由加入到集合的先后决定)。

创建单元格(Cell)时,只要将Cell的StyleIndex属性设置为CellFormat的CellFormatId就可以应用单元格式了。代码如下:

//定义格式

 代码如下 复制代码

stylesheet.CellFormats = new CellFormats();
stylesheet.CellFormats.Count = 2;
//styleIndex =0U
CellFormat cfDefault = new CellFormat();
cfDefault.Alignment = new Alignment();
cfDefault.NumberFormatId = 0;
cfDefault.FontId = 0;
cfDefault.BorderId = 0;
cfDefault.FillId = 0;
cfDefault.ApplyAlignment = true;
cfDefault.ApplyBorder = true;
stylesheet.CellFormats.Append(cfDefault);

//styleIndex =1U
CellFormat cfContent = new CellFormat();
cfContent.Alignment = new Alignment();
cfContent.NumberFormatId = 0;
cfContent.FontId = 0;
cfContent.BorderId = 1;
cfContent.FillId = 2;
cfContent.ApplyAlignment = true;
cfContent.ApplyBorder = true;
stylesheet.CellFormats.Append(cfContent);

 

创建单元格的代码如下:

 代码如下 复制代码

 

        private Cell CreateTextCell(object cellValue, Nullable<uint> styleIndex)
        {
            Cell cell = new Cell();

            cell.DataType = CellValues.InlineString;

            cell.CellReference = “A1”;

            if (styleIndex.HasValue)
                cell.StyleIndex = styleIndex.Value;

            InlineString inlineString = new InlineString();
            Text t = new Text();

            t.Text = cellValue.ToString();
            inlineString.AppendChild(t);
            cell.AppendChild(inlineString);

            return cell;
        }

 

注:本文主要简单的介绍使用OpenXML设置常用的单元格格式

 

时间: 2024-09-12 04:38:08

asp.net OpenXML 设置Excel单元格格式的相关文章

POI中设置Excel单元格格式

POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFCellStyle setBorder = wb.createCellStyle(); 一.设置背景色: setBorder.setFillForegroundColor((short) 13);// 设置背景色 setBorder.setFillPatter

如何设置Excel单元格的输入数据类型限制?

  1.选择需要设置数据验证的单元格,如这里的E3单元格.打开"数据验证"对话框,在"设置"选项卡中设置有效性条件,这里在"允许"下拉列表中选择"自定义"选项,在"公式"文本框中输入公式"=ISNUMBER(E3)",如图1所示;在"输入信息"选项卡中设置单元格输入提示信息,如图2所示;在"出错警告"选项卡中设置出错提示信息,如图3所示.完成设置后

asp.net导出Excel怎样设置单元格格式

问题描述 stringRowSreslut=null;for(intk=0;k<new_dt.Rows.Count;k++){for(intj=0;j<new_dt.Columns.Count;j++){RowSreslut+=new_dt.Rows[k][j]+"t";}sw.WriteLine(RowSreslut);RowSreslut=null;}//stringstyle=@"<style>.text{mso-number-format:@;

excel单元格下拉选项设置

问题描述 excel单元格下拉选项设置 excel单元格下拉选项里有数字和文字,选择以后只显示数字,有没有具体点的做法,求大神~~ 解决方案 问题不清楚,请写具体一点 解决方案二: 下拉框的实际值和显示值?显示值用来显示,实际值用来程序处理? 解决方案三: 可以使用一个隐藏的列来保存真实完整的值,而用来下拉的通过函数只显示数字. 解决方案四: 你问的是 下拉选项的 值如何自己定义? 还是自己定义了下拉菜单的值 选择文字 文字不显示? 解决方案五: 你问的是 下拉选项的 值如何自己定义? 还是自己

在使用OpenXml导出数据到Excel的时候如何设置报表单元格的宽度自适应

问题描述 在使用OpenXml导出数据到Excel的时候如何设置报表单元格的宽度自适应?拜托了 解决方案 解决方案二:兄弟啊,很急很关键.大家抬一手啊

自定义格式隐藏Excel单元格中数据

首先,选择要隐藏数据的单元格. 接着,调出"设置单元格格式"对话框,选择"数字"选项卡,单击左侧分类中的"自定义",在右侧"类型"中输入自定义格式";;;",单击"确定". 此时,在Excel工作表中,将看不到单元格中的数据,但是选择单元格后,在编辑栏中仍然可以看到其内容.

Excel单元格中条件格式的技巧

 对于Excel表格中的不同数据,我们可以按照不同的条件和要求设置它显示的格式,以便把不同的数据更加醒目地表示出来,这就是Excel单元格中条件格式的应用.也就是说,我们可以根据单元格中数据所满足的不同条件为单元格设置不同的格式.那么,如果我们希望某单元格的格式根据其他单元格数据所满足的条件来进行相应设置,能不能实现呢?当然能,在Excel 2007中,用条件格式同样可以让这种希望变成现实. 考试号在A列,总分成绩在G列,毕业学校则在H列,各科成绩分布在C至F列,现在我们根据指定的条件为相应单元

excel单元格中格式太多该怎么解决?

  excel单元格中格式太多该怎么解决?          1.单元格合并居中和对齐: 在Excel种,单元格的合并,居中,对齐是最常见的格式处理,一般在表头或表尾,都采用合并居中对齐的方式,如何居中对齐,选中单元格,点击菜单栏的合并居中并对其,如图: 2.单元格显示表格打印线: Excel默认情况下在软件内显示灰色的边框,但是在打印出来的时候是没有的.选中需要边框的单元格,鼠标右键设置单元格格式,选择内外边框,如图:(可以根据自己需求,直选中内部或直选中外部). 3.批量对齐: 在一列或者一

《Excel高手捷径:一招鲜,吃遍天》一第13招 你知道你出生那天是星期几吗?——Excel奇妙的自定义单元格格式

第13招 你知道你出生那天是星期几吗?--Excel奇妙的自定义单元格格式 Excel高手捷径:一招鲜,吃遍天相信每个人都知道自己的生日,但是如果问你生日那天是星期几,估计没有几个人知道,一般人都需要查万年历.其实,不用查万年历,用Excel自定义单元格格式就知道,我们在单元格输入出生日期,比如1990-5-31,使用鼠标右键设置单元格格式,在"自定义"格式里输入aaaa,示例就提示为星期四,如图1-55所示.如果自定义格式输入dddd,就显示日期的英文Thursday,如果输入ddd