通过实例的方式详细说明如何通过各种属性设置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使用示例
1、添加引用到你的网站或项目中:
2、一个导出excel的测试程序:
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ExportBtn_Click(object sender, EventArgs e) {
XlsDocument xls = new XlsDocument();
xls.FileName = "TestList.xls";
int rowIndex = 1;
Worksheet sheet = xls.Workbook.Worksheets.Add("测试表");//Sheet名称
Cells cells = sheet.Cells;
Cell cell = cells.Add(1, 1, "编号");
cell.Font.Bold = true;
cell = cells.Add(1, 2, "名称");
cell.Font.Bold = true;
foreach (DataRow row in table.Rows) {
cells.Add(rowIndex, 1, rowIndex);
cells.Add(rowIndex, 2, "名称"+rowIndex);
rowIndex++;
}
xls.Send();
}
MyXls是一个操作Excel的开源类库,支持设置字体、列宽、行高(由BOSSMA实现)、合并单元格、边框、背景颜色、数据类型、自动换行、对齐方式等,通过众多项目的使用表现,证明MyXls对于创建简单格式的Excel文件十分快捷方便。
MyXLS是一个导出Excel的好工具,速度快,体积小,而且也不用担心使用Com生成Excel时资源释放的问题了。
应该表示悬窗中得一种,在设计说明里面应该可以找得到对应名称
阳台的悬挑板
是灯管数量不同呀,6*55是代表有6根55瓦的灯管在里面,而8*55的就是8根. 功率不同,一个是6*55W,一个是8*55W 若你指的是同一款灯,大小不一样。功率大的灯饰,尺...
对于学黑和爱折腾的, 现在主流的虚拟机有 VMware Workstation 、Virtual box、VirtualPC等, 这三种虚拟机本人都安装实践过,最终选择了 Virtual box 开始,原因呢, VMware 虽然功能 强大,但是体积太大,配置上网常常出现各种问题,据说用以太网连接最适合,但我的电脑 不是很稳定,还有桥接等方法,不过安装增强包以后操作还是很方便的, Virtual PC本人用 的不多不发表意见,至于 Virtual box,体积比较小不到 100m,上网默认配置即可,操作也方 便。下面开始图解安装啦。 。。。 我下载的是目前最新的 virtual box 4.2 ,现在开始安装,双击下载的软件,点击 next 默认安装,建议不要安装在 C盘,我们可以点击 browse 选择盘符,点击 next 1、在桌面上创建快捷方式 2、在快速启动栏创建快捷方式,根据
单位 CV1 kV 1min 工频耐压 Ud( 有效值 ) 断口、相间、对地 kV 雷电冲击耐受电压 Up(峰值) 断口、相间、对地 kV Hz A 630, 1250, 1600, 2000, 2500, 3150, 4000 kA 25, 31.5, 40, 50 kA 63, 80, 100, 125 kA 63, 80, 100, 125 kA 25, 31.5, 40, 50 s A kA A V V 1250-31.5 及以下: 20000 1250-31.5 以上: 10000 项目 数据 型号 额定电压 Ur 12 额定绝缘水平 42 75 额定频率 fr 50 额定电流 Ir 额定短路开断电流 Isc(有效值) 额定峰值耐受电流 Ip 额定短路关合电流 额定短时耐受电流 Ik (有效值) 额定短路持续时间 tk 4 额定背对背电容器组开断电流 Ibb ( 有效值 ) 40