导出Excel(脱离Office环境)
1、引用MyXls.SL2.dll文件
2、代码示例
public void Out2Excel(string filename)
{
//生成Excel开始
XlsDocument xls = new XlsDocument();//创建空xls文档
xls.FileName = System.IO.Directory.GetCurrentDirectory() + "\\" + filename + ".xls";//保存路径,如果直接发送到客户端的话只需要名称 生成名称
Worksheet sheet = xls.Workbook.Worksheets.AddNamed(filename); //创建一个工作页为Dome
//设置文档列属性
ColumnInfo cinfo = new ColumnInfo(xls, sheet);//设置xls文档的指定工作页的列属性
cinfo.Collapsed = true;
//设置列的范围 如 0列-10列
cinfo.ColumnIndexStart = 0;//列开始
cinfo.ColumnIndexEnd = (ushort)lsvContent.Items.Count;//列结束
cinfo.Collapsed = true;
cinfo.Width = 120 * 60;//列宽度
sheet.AddColumnInfo(cinfo);
//设置文档列属性结束
//设置指定工作页跨行跨列
MergeArea ma = new MergeArea(1, 1, 1, 4);//从第1行跨到第二行,从第一列跨到第4列
sheet.AddMergeArea(ma);
//设置指定工作页跨行跨列结束
//创建列样式创建列时引用
XF cellXF = xls.NewXF();
cellXF.VerticalAlignment = VerticalAlignments.Centered;
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;
cellXF.Font.Height = 24 * 12;
cellXF.Font.Bold = true;
cellXF.Pattern = 1;//设定单元格填充风格。如果设定为0,则是纯色填充
cellXF.PatternBackgroundColor = Colors.Red;//填充的背景底色
cellXF.PatternColor = Colors.Red;//设定填充线条的颜色
//创建列样式结束
//创建列
Cells cells = sheet.Cells; //获得指定工作页列集合
//列操作基本
Cell cell = cells.Add(1, 1, "对账文件"+filename, cellXF);//添加标题列返回一个列 参数:行 列 名称 样式对象
//设置XY居中
cell.HorizontalAlignment = HorizontalAlignments.Centered;
cell.VerticalAlignment = VerticalAlignments.Centered;
//设置字体
cell.Font.Bold = true;//设置粗体
cell.Font.ColorIndex = 0;//设置颜色码
cell.Font.FontFamily = FontFamilies.Roman;//设置字体 默认为宋体
//创建列结束
//创建列表头
Cell title = cells.Add(2, 1, "对账日期");
title = cells.Add(2, 2, "流水号");
title = cells.Add(2, 3, "保单号");
title = cells.Add(2, 4, "保费");
title.HorizontalAlignment = HorizontalAlignments.Right;
title.VerticalAlignment = VerticalAlignments.Centered;
//创建模拟数据
for (int i = 0; i < lsvContent.Items.Count; i++)
{
cells.Add(i + 3, 1, lsvContent.Items[i].SubItems[0].Text);//添加列,不设置列属性就不用返回列对象
cells.Add(i + 3, 2, lsvContent.Items[i].SubItems[1].Text);//添加列,不设置列属性就不用返回列对象
cells.Add(i + 3, 3, lsvContent.Items[i].SubItems[2].Text);//添加列,不设置列属性就不用返回列对象
cells.Add(i + 3, 4, lsvContent.Items[i].SubItems[3].Text);//添加列,不设置列属性就不用返回列对象
}
//生成保存到服务器如果存在不会覆盖并且报异常所以先删除在保存新的
File.Delete(System.IO.Directory.GetCurrentDirectory() + "\\" + filename + ".xls");//删除
//保存文档
xls.Save();//保存到服务器
//xls.Send();//发送到客户端
System.Diagnostics.Process.Start(System.IO.Directory.GetCurrentDirectory() + "\\" + filename + ".xls");
}
{
//生成Excel开始
XlsDocument xls = new XlsDocument();//创建空xls文档
xls.FileName = System.IO.Directory.GetCurrentDirectory() + "\\" + filename + ".xls";//保存路径,如果直接发送到客户端的话只需要名称 生成名称
Worksheet sheet = xls.Workbook.Worksheets.AddNamed(filename); //创建一个工作页为Dome
//设置文档列属性
ColumnInfo cinfo = new ColumnInfo(xls, sheet);//设置xls文档的指定工作页的列属性
cinfo.Collapsed = true;
//设置列的范围 如 0列-10列
cinfo.ColumnIndexStart = 0;//列开始
cinfo.ColumnIndexEnd = (ushort)lsvContent.Items.Count;//列结束
cinfo.Collapsed = true;
cinfo.Width = 120 * 60;//列宽度
sheet.AddColumnInfo(cinfo);
//设置文档列属性结束
//设置指定工作页跨行跨列
MergeArea ma = new MergeArea(1, 1, 1, 4);//从第1行跨到第二行,从第一列跨到第4列
sheet.AddMergeArea(ma);
//设置指定工作页跨行跨列结束
//创建列样式创建列时引用
XF cellXF = xls.NewXF();
cellXF.VerticalAlignment = VerticalAlignments.Centered;
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;
cellXF.Font.Height = 24 * 12;
cellXF.Font.Bold = true;
cellXF.Pattern = 1;//设定单元格填充风格。如果设定为0,则是纯色填充
cellXF.PatternBackgroundColor = Colors.Red;//填充的背景底色
cellXF.PatternColor = Colors.Red;//设定填充线条的颜色
//创建列样式结束
//创建列
Cells cells = sheet.Cells; //获得指定工作页列集合
//列操作基本
Cell cell = cells.Add(1, 1, "对账文件"+filename, cellXF);//添加标题列返回一个列 参数:行 列 名称 样式对象
//设置XY居中
cell.HorizontalAlignment = HorizontalAlignments.Centered;
cell.VerticalAlignment = VerticalAlignments.Centered;
//设置字体
cell.Font.Bold = true;//设置粗体
cell.Font.ColorIndex = 0;//设置颜色码
cell.Font.FontFamily = FontFamilies.Roman;//设置字体 默认为宋体
//创建列结束
//创建列表头
Cell title = cells.Add(2, 1, "对账日期");
title = cells.Add(2, 2, "流水号");
title = cells.Add(2, 3, "保单号");
title = cells.Add(2, 4, "保费");
title.HorizontalAlignment = HorizontalAlignments.Right;
title.VerticalAlignment = VerticalAlignments.Centered;
//创建模拟数据
for (int i = 0; i < lsvContent.Items.Count; i++)
{
cells.Add(i + 3, 1, lsvContent.Items[i].SubItems[0].Text);//添加列,不设置列属性就不用返回列对象
cells.Add(i + 3, 2, lsvContent.Items[i].SubItems[1].Text);//添加列,不设置列属性就不用返回列对象
cells.Add(i + 3, 3, lsvContent.Items[i].SubItems[2].Text);//添加列,不设置列属性就不用返回列对象
cells.Add(i + 3, 4, lsvContent.Items[i].SubItems[3].Text);//添加列,不设置列属性就不用返回列对象
}
//生成保存到服务器如果存在不会覆盖并且报异常所以先删除在保存新的
File.Delete(System.IO.Directory.GetCurrentDirectory() + "\\" + filename + ".xls");//删除
//保存文档
xls.Save();//保存到服务器
//xls.Send();//发送到客户端
System.Diagnostics.Process.Start(System.IO.Directory.GetCurrentDirectory() + "\\" + filename + ".xls");
}
引用文件lMyXls文件