MyXls: 导出Excel的各种设置

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();
    }
时间: 2024-11-07 10:15:45

MyXls: 导出Excel的各种设置的相关文章

MyXls导出Excel的各种设置

MyXls是一个操作Excel的开源类库,支持设置字体.列宽.行高(由BOSSMA实现).合并单元格.边框.背景颜色.数据类型.自动换行.对齐方式等,通过众多项目的使用表现,证明MyXls对于创建简单格式的Excel文件十分快捷方便. 本文将通过实例的方式详细说明如何通过各种属性设置MyXls的样式,并附带示例程序的源代码. // 准备测试数据 List<PersonInfo> list = new List<PersonInfo>(); for (int i = 1; i <

C#将网页数据导出Excel时编码设置

1 public void DGToExcel() 2 { 3 Response.ClearContent(); 4 Response.Charset = "GB2312";//内容编码 5 Response.ContentType = "application/ms-excel"; 6 Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//内容编码 7 R

java poi导出excel response.setHeader设置导出文件名抓包不合法及处理导出文件名为action方法名

问题出现1: spring MVC 框架下使用poi导出excel,设置导出文件名:response.setHeader("Content-Disposition", "attachment;filename=" +sourceId+"_"+dateString+".xls"); 该方法进行抓包测试时,显示BUG url不合法. 解决办法:对 "attachment;filename=" +sourceId

第三方库NPOI,EPPlus,MyXls导出Excel性能比较

测试平台 CPU:i5 6500 内存:2x4G .NET4.0 测试结果如下: 性能上通过对比很容易得出结论,各方面npoi是最优选择.epplus在列数不是很多的情况下,性能也不错,但是当数据多了的情况下, 对比npoi就有不小的差距了.至于MyXls在测试过程中,当数据较多时,内存不够支撑,直接崩溃了. 性能比较结果: npoi>epplus>Myxls 功能比较结果: npoi是最全的,即能导出2003的.xls格式也能导出2007以后的.xlsx格式.MyXls只能导出.xls,ep

NPOI导出EXCEL 打印设置分页及打印标题

在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而这个属性默认是true的,怪不得一直设置都不起作用. 设置打印标题用 hssfworkbook.SetRepeatingRowsAndColumns(0, 0, 5, 0, 5); 但最新版本已经有新的方法了. Sheet sheet1 = hssfworkbook.CreateSheet("She

C#.Net 导出Excel 之单元格 相关设置

range.NumberFormatLocal = "@";     //设置单元格格式为文本range = (Range)worksheet.get_Range("A1", "E1");     //获取Excel多个单元格区域:本例做为Excel表头range.Merge(0);     //单元格合并动作worksheet.Cells[1, 1] = "Excel单元格赋值";     //Excel单元格赋值range

gridcontrol显示行号,总行,打印,导出Excel,设置标头及内容居中方法

1.一般为了表格显示数据更直观,经常会显示行号以及总数.让gridcontrol显示行号,首先你需要设置一下显示行号的宽度,也就是IndicatorWith.默认值为-1,可根据实际数值需要设置宽度,案例设置为50:然后在gridView1_CustomDrawRowIndicator事件中添加如下代码: //设置显示行号样式,文字居中,也可根据e.Info.Appearance设置其他属性 e.Info.Appearance.TextOptions.HAlignment = DevExpres

.Net常用技巧_导出 Excel 和相关打印设置

Excel.Application myExcel = new Excel.Application();发 表Excel.Workbook workbookData = myExcel.Application.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);Excel.Worksheet xlSheet = (Worksheet)workbookData.Worksheets[1];//取得sheet1 1) 显示当前窗口: xlSheet.

导出Excel之Epplus使用教程4(其他设置)

导出Excel之Epplus使用教程1(基本介绍) 导出Excel之Epplus使用教程2(样式设置) 导出Excel之Epplus使用教程3(图表设置) 导出Excel之Epplus使用教程4(其他设置) 1.嵌入VBA代码 首先将vba代码保存成txt文本格式,然后用epplus去调用这个txt文本文件即可,非常简单,当然要想vba调用成功,前提是你的vba代码是没问题的喽! worksheet.CodeModule.Name = "sheet" ; worksheet.CodeM