该文转自
http://blog.bossma.cn/csharp/myxls-export-excel-option-list/comment-page-1/#comm
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.dll库文件
分享到:
相关推荐
使用myxls控件时,首先需要在项目中引入相关的DLL文件,这个压缩包中包含了名为"MyXls的Dll文件"的部分,这些文件是myxls控件的核心组件,它们包含了实现Excel导出所需的所有类库。通过引用这些DLL,开发者可以在...
使用NPOI2 1 3 MyXls对Excel进行导入导出操作 NOPI导入导出均支持 xls与 xlsx格式 支持数据自适应单元格宽度 固定表头 设置行高等一系列基本设置 支持数据类型识别等 注意:myxls仅支持 xls格式导出 没有导入 其中...
MyXLS是一个导出Excel的好工具,速度快,体积小,而且也不用担心使用Com生成Excel时资源释放的问题了。 自己在此基础上修改了原作者的设置边框线时候自动对单元格添加填充色的bug,增加了修改单元格行高。 ASP...
### C#导出Excel并实现单元格合并及样式设置 #### 概述 在实际开发过程中,导出数据到Excel...通过以上步骤,我们可以有效地使用C#和`Org.In2Bits.MyXls`库来实现导出Excel文件,并完成数据的合并与样式设置等功能。
通过上述分析,我们可以看到在 ASP.NET 中导出带有图片的 Excel 文件不仅涉及 Excel 的基本操作,还需要考虑图片的处理及控制,这是一个较为复杂的任务,但通过合理的代码设计和逻辑安排是可以实现的。
RowInfo rol1 = new RowInfo(); rol1.RowHeight = 16 * 20; rol1.RowIndexStart = 3; rol1.RowIndexEnd =10; sheet.AddRowInfo(rol1); 从第3行到第10行,行高都是16。行高是以1/20 point为单位的。
总的来说,使用第三方控件如myxls在C#中导出Excel,不仅提高了程序的可移植性,还提供了更多自定义样式和格式的可能性。这种方式对于那些需要大量生成Excel报表,或者对Excel样式有特殊要求的项目非常实用。在实际...
MyXls是一个专门针对ASP.NET的开源控件,用于无依赖微软组件的情况下快速高效地导出Excel。 MyXls控件的核心优势在于它不依赖于微软的任何组件,这意味着可以在没有安装Office的服务器上正常工作,降低了系统的维护...
(1)支持web及winform从DataTable导出到Excel; (2)生成速度很快; (3)准确判断数据类型,不会出现身份证转数值等问题; (4)如果单页条数大于65535时会新建工作表; (5)列宽自适应;
在实际开发中,可以根据项目的具体需求,灵活组合使用myxls提供的各种方法,以实现高效且功能强大的Excel报表生成。 总的来说,myxls类库为C#开发者提供了一个强大的工具,帮助他们在处理Excel报表时避免了与底层...
Asp.Net使用org.in2bits.MyXls.dll操作excel首先下载org.in2bits.MyXls.dll 添加命名空间: using org.in2bits.MyXls; using System.IO; 思路: 添加引用 (using org.in2bits.MyXls)→ 创建空xls文档...
【MyXLS组件详解】 MyXLS是一款专为.NET开发者设计的高效且简便的库,用于处理Excel文件的读写操作。...在实际项目中,结合MyXLS提供的API文档和示例代码,开发者可以轻松实现各种复杂的Excel操作需求。
此外,org.in2bits.MyXls.dll还支持处理Excel文件的其他高级特性,如样式设置、数据验证和超链接。开发者可以控制单元格的字体、颜色、边框样式等,实现个性化显示;通过设定数据验证规则,可以限制用户输入的数据...
这个测试项目通常包含了各种示例代码,演示了如何创建、填充工作簿和工作表,以及如何导出Excel文件。通过运行和分析这些测试用例,开发者可以快速掌握MyXls库的用法和特性。 总的来说,MyXls是一个实用的工具,它...
在实际应用中,这可能是为了满足各种格式化需求,如创建报告、数据导出或自定义模板。单元格高度的调整可以使表格看起来更加整洁,提高数据的可读性,尤其是在处理大量数据时。 `MyXls`库的使用可以分为几个步骤: ...
本文将详细介绍如何使用 C# 和 MyXls 库来导出包含特定日期格式和数字格式的 Excel 报表。 #### 一、准备工作 首先,确保已经安装了 MyXls 库。如果还没有安装,可以通过 NuGet 包管理器安装。安装命令如下: ```...
MyXls导出Excel的各种设置 MyXls是一个操作Excel的开源类库,支持设置字体、列宽、行高(由BOSSMA实现)、合并单元格、边框、背景颜色、数据类型、自动换行、对齐方式等,通过众多项目的使用表现,证明MyXls对于...
在“NPOI导出Excel(xls和xlsx).cs”这个代码示例中,我们可以看到如何使用NPOI来创建这两种格式的文件。 首先,我们需要引用NPOI的库,如`using NPOI.HPSF;`,`using NPOI.SS.UserModel;`和`using NPOI.XSSF....
MyXls是一个操作Excel的开源类库,支持设置字体、列宽、行高(由BOSSMA实现)、合并单元格、边框、背景颜色、... MyXLS是一个导出Excel的好工具,速度快,体积小,而且也不用担心使用Com生成Excel时资源释放的问题了。
MyXls.SL2.dll作为一个DLL文件,它封装了对Excel文件的各种操作,通过调用库中的方法,开发者可以在不依赖Microsoft Office的情况下实现Excel操作。 2. **API接口与功能**: MyXls.SL2.dll提供了丰富的API,包括...