MyXls导出Excel的各种设置

转载 2012年03月22日 21:34:36

转发至:http://blog.bossma.cn/csharp/myxls-export-excel-option-list/

MyXls是一个操作Excel的开源类库,支持设置字体、列宽、行高(由BOSSMA实现)、合并单元格、边框、背景颜色、数据类型、自动换行、对齐方式等,通过众多项目的使用表现,证明MyXls对于创建简单格式的Excel文件十分快捷方便。

本文将通过实例的方式详细说明如何通过各种属性设置MyXls的样式,并附带示例程序的源代码。

 
// 准备测试数据
List<PersonInfo> list = new List<PersonInfo>();
for (int i = 1; i <= 200; i++)
{
    PersonInfo person = new PersonInfo()
    {
        RealName = "张" + i,
        Gender = (i % 2 == 0 ? "男" : "女"),
        Age = 20 + (i % 3)
    };
  
    list.Add(person);
}
  
int recordCount = 200; // 要导出的记录总数
int maxRecordCount = 100; // 每个sheet表的最大记录数
int sheetCount = 1; // Sheet表的数目
  
XlsDocument xls = new XlsDocument();
xls.FileName = "MyXls-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
  
// 计算需要多少个sheet表显示数据
if (recordCount > maxRecordCount)
{
    sheetCount = (int)Math.Ceiling((decimal)recordCount / (decimal)maxRecordCount);
}
  
// Sheet标题样式
XF titleXF = xls.NewXF(); // 为xls生成一个XF实例,XF是单元格格式对象
titleXF.HorizontalAlignment = HorizontalAlignments.Centered; // 设定文字居中
titleXF.VerticalAlignment = VerticalAlignments.Centered; // 垂直居中
titleXF.UseBorder = true; // 使用边框
titleXF.TopLineStyle = 1; // 上边框样式
titleXF.TopLineColor = Colors.Black; // 上边框颜色
titleXF.LeftLineStyle = 1; // 左边框样式
titleXF.LeftLineColor = Colors.Black; // 左边框颜色
titleXF.RightLineStyle = 1; // 右边框样式
titleXF.RightLineColor = Colors.Black; // 右边框颜色
titleXF.Font.FontName = "宋体"; // 字体
titleXF.Font.Bold = true; // 是否加楚
titleXF.Font.Height = 12 * 20; // 字大小(字体大小是以 1/20 point 为单位的)
  
// 列标题样式
XF columnTitleXF = xls.NewXF(); // 为xls生成一个XF实例,XF是单元格格式对象
columnTitleXF.HorizontalAlignment = HorizontalAlignments.Centered; // 设定文字居中
columnTitleXF.VerticalAlignment = VerticalAlignments.Centered; // 垂直居中
columnTitleXF.UseBorder = true; // 使用边框
columnTitleXF.TopLineStyle = 1; // 上边框样式
columnTitleXF.TopLineColor = Colors.Black; // 上边框颜色
columnTitleXF.BottomLineStyle = 1; // 下边框样式
columnTitleXF.BottomLineColor = Colors.Black; // 下边框颜色
columnTitleXF.LeftLineStyle = 1; // 左边框样式
columnTitleXF.LeftLineColor = Colors.Black; // 左边框颜色
columnTitleXF.Pattern = 1; // 单元格填充风格。如果设定为0,则是纯色填充(无色),1代表没有间隙的实色
columnTitleXF.PatternBackgroundColor = Colors.Red; // 填充的底色
columnTitleXF.PatternColor = Colors.Default2F; // 填充背景色
  
// 数据单元格样式
XF dataXF = xls.NewXF(); // 为xls生成一个XF实例,XF是单元格格式对象
dataXF.HorizontalAlignment = HorizontalAlignments.Centered; // 设定文字居中
dataXF.VerticalAlignment = VerticalAlignments.Centered; // 垂直居中
dataXF.UseBorder = true; // 使用边框
dataXF.LeftLineStyle = 1; // 左边框样式
dataXF.LeftLineColor = Colors.Black; // 左边框颜色
dataXF.BottomLineStyle = 1;  // 下边框样式
dataXF.BottomLineColor = Colors.Black;  // 下边框颜色
dataXF.Font.FontName = "宋体";
dataXF.Font.Height = 9 * 20; // 设定字大小(字体大小是以 1/20 point 为单位的)
dataXF.UseProtection = false; // 默认的就是受保护的,导出后需要启用编辑才可修改
dataXF.TextWrapRight = true; // 自动换行
  
// 遍历创建Sheet
for (int i = 1; i <= sheetCount; i++)
{
    // 根据计算出来的Sheet数量,一个个创建
    // 行和列的设置需要添加到指定的Sheet中,且每个设置对象不能重用(因为可以设置起始和终止行或列,就没有太大必要重用了,这应是一个策略问题)
    Worksheet sheet;
    if (sheetCount == 1)
    {
        sheet = xls.Workbook.Worksheets.Add("人员信息表");
    }
    else
    {
        sheet = xls.Workbook.Worksheets.Add("人员信息表 - " + i);
    }
  
    // 序号列设置
    ColumnInfo col0 = new ColumnInfo(xls, sheet); // 列对象
    col0.ColumnIndexStart = 0; // 起始列为第1列,索引从0开始
    col0.ColumnIndexEnd = 0; // 终止列为第1列,索引从0开始
    col0.Width = 8 * 256; // 列的宽度计量单位为 1/256 字符宽
    sheet.AddColumnInfo(col0); // 把格式附加到sheet页上
  
    // 姓名列设置
    ColumnInfo col1 = new ColumnInfo(xls, sheet); // 列对象
    col1.ColumnIndexStart = 1; // 起始列为第2列,索引从0开始
    col1.ColumnIndexEnd = 1; // 终止列为第2列,索引从0开始
    col1.Width = 16 * 256; // 列的宽度计量单位为 1/256 字符宽
    sheet.AddColumnInfo(col1); // 把格式附加到sheet页上
  
    // 性别列设置
    ColumnInfo col2 = new ColumnInfo(xls, sheet); // 列对象
    col2.ColumnIndexStart = 2; // 起始列为第3列,索引从0开始
    col2.ColumnIndexEnd = 2; // 终止列为第3列,索引从0开始
    col2.Width = 16 * 256; // 列的宽度计量单位为 1/256 字符宽
    sheet.AddColumnInfo(col2); // 把格式附加到sheet页上
  
    // 年龄列设置
    ColumnInfo col3 = new ColumnInfo(xls, sheet); // 列对象
    col3.ColumnIndexStart = 3; // 起始列为第4列,索引从0开始
    col3.ColumnIndexEnd = 3; // 终止列为第4列,索引从0开始
    col3.Width = 16 * 256; // 列的宽度计量单位为 1/256 字符宽
    sheet.AddColumnInfo(col3); // 把格式附加到sheet页上
  
    // 行设置
    RowInfo rol1 = new RowInfo(); // 行对象
    rol1.RowHeight = 16 * 20; // 行高
    rol1.RowIndexStart = 3; // 行设置起始列,索引从1开始
    rol1.RowIndexEnd = (ushort)(maxRecordCount + 2); //行设置结束列
    sheet.AddRowInfo(rol1); // 把设置附加到sheet页上
  
    // 合并单元格
    //sheet.Cells.Merge(1, 1, 1, 4);
    MergeArea titleArea = new MergeArea(1, 1, 1, 4); // 一个合并单元格实例(合并第1行、第1列 到 第1行、第4列)
    sheet.AddMergeArea(titleArea); //填加合并单元格 
  
    // 开始填充数据到单元格
    Cells cells = sheet.Cells;
  
    // Sheet标题行,行和列的索引都是从1开始的
    Cell cell = cells.Add(1, 1, "人员信息统计表", titleXF);
    cells.Add(1, 2, "", titleXF); // 合并单元格后仍需要设置每一个单元格,样式才有效
    cells.Add(1, 3, "", titleXF); // 合并单元格后仍需要设置每一个单元格,样式才有效
    cells.Add(1, 4, "", titleXF); // 合并单元格后仍需要设置每一个单元格,样式才有效
    sheet.Rows[1].RowHeight = 40 * 20; // 对指定的行设置行高
  
    // 列标题行
    cells.Add(2, 1, "序号", columnTitleXF);
    cells.Add(2, 2, "姓名", columnTitleXF);
    cells.Add(2, 3, "性别", columnTitleXF);
  
    // 最右侧的列需要右边框,通过修改样式columnTitleXF的方式,还可以通过设置单元格属性的方式实现。
    columnTitleXF.RightLineStyle = 1;
    columnTitleXF.RightLineColor = Colors.Black;
    cells.Add(2, 4, "年龄", columnTitleXF);
  
    sheet.Rows[2].RowHeight = 18 * 20; // 对指定的行设置行高
  
    // 行索引
    int rowIndex = 3;
  
    for (int j = 0; j < maxRecordCount; j++)
    {
        // 当前记录在数据集合中的索引
        int k = (i - 1) * maxRecordCount + j;
  
        // 如果达到sheet最大记录数则跳出
        if (k >= recordCount)
        {
            break;
        }
  
        // 设置单元格的值
        cells.Add(rowIndex, 1, k + 1, dataXF);
        cells.Add(rowIndex, 2, list[k].RealName, dataXF);
        cells.Add(rowIndex, 3, list[k].Gender, dataXF);
  
        // 最右侧的列需要右边框,通过给Cell设置属性的方式实现,因为并不是所有的单元格都需要设置,不能通过修改样式dataXF的方式
        Cell lastCell = cells.Add(rowIndex, 4, list[k].Age, dataXF);
        lastCell.RightLineStyle = 1;
        lastCell.RightLineColor = Colors.Black;
  
        // 行号递增
        rowIndex++;
    }
}
  
// 在浏览器中输出Excel文件
xls.Send();

MyXls导出Excel的各种设置

MyXls是一个操作Excel的开源类库,支持设置字体、列宽、行高(由BOSSMA实现)、合并单元格、边框、背景颜色、数据类型、自动换行、对齐方式等。 本文将通过实例的方式详细说明如何通过各种属性设...
  • u011591922
  • u011591922
  • 2016年12月02日 10:00
  • 306

MyXls导出Excel的各种设置

MyXls是一个操作Excel的开源类库,支持设置字体、列宽、行高(由BOSSMA实现)、合并单元格、边框、背景颜色、数据类型、自动换行、对齐方式等,通过众多项目的使用表现,证明MyXls对于创建简单...
  • HW1233456
  • HW1233456
  • 2013年08月26日 11:23
  • 551

C#中导出Excel的单元格属性设置

2、 Excel显示格式控制。 A、单元格格式设置,默认为常规类型;Excel 代码: Excel.Range r = mySheet.get_Range(mySheet.Cells[1, 1...
  • wangqifei521
  • wangqifei521
  • 2014年04月11日 15:09
  • 2814

.net 导出excel并设置格式

asp教程.net 导出excel并设置格式 添加引用:microsoft excel 11.0 object library  添加:using microsoft.office.interop...
  • u012802070
  • u012802070
  • 2013年12月27日 11:23
  • 444

C#导出Excel按照指定格式设置单元格属性值

http://blog.sina.com.cn/s/blog_834dd3fa01013kw5.html 最近项目中一直在写XML、Table、Excel之间的转化。之前一直都是不考虑格式的导出...
  • u011981242
  • u011981242
  • 2016年05月31日 12:08
  • 8895

poi导出Excel 属性的设置篇

package com.oa.action.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
  • wu920604
  • wu920604
  • 2016年07月08日 16:42
  • 1535

使用jxl导出Excel文件,并且设置Excel样式

最近一段时间一直在做Excel导出,主要是年关将近,有各类统计数据需要。 第一步:创建Excel文件...
  • hamote
  • hamote
  • 2016年01月26日 15:26
  • 621

JSP设立头信息导出Excel

JSP设置头信息导出Excel 我们知道,浏览器对请求得到的反馈都会读取响应的头,头内包含了该返回内容的一些信息,这里就是指定反馈的是Excel流数据,则浏览器就会默认组成Excle进行下载。 所...
  • gaoshanliushui2009
  • gaoshanliushui2009
  • 2014年08月14日 10:24
  • 461

设置Java导出Excel表头

1、问题背景     有一个学生表,需要导出到Excel,有学号、姓名、性别和年龄四个字段2、实现源码/** * * @Project:Report * @Title:ExcelExport....
  • you23hai45
  • you23hai45
  • 2015年11月04日 14:35
  • 3730

POI中导出Excel单元格样式(居中,字体,边框等)

POI中设置Excel单元格格式样式(居中,字体,边框等)HSSFCellStyle cellStyle = wb.createCellStyle(); 一、设置背景色: cellSty...
  • fuyifang
  • fuyifang
  • 2017年04月01日 10:02
  • 2805
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MyXls导出Excel的各种设置
举报原因:
原因补充:

(最多只允许输入30个字)