class OpenXmlDemo
{
/*
* excel 对象结构
* SpreadsheetDocument
* 》WorkbookPart
* 》WorksheetPart
* 》Worksheet
* 》SheetData
* 》WorksheetPart
* 》Worksheet
* 》SheetData1
* 》Workbook
* 》Sheets
* 》Sheet
*/
public static void Create(string path)
{
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(path, SpreadsheetDocumentType.Workbook); WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
Workbook workbook = new Workbook();
Sheets sheets = new Sheets(); //创建样式 var workbookStylesPart = workbookpart.AddNewPart<WorkbookStylesPart>();
Stylesheet stylesheet = new Stylesheet();
workbookStylesPart.Stylesheet = stylesheet; #region 设置字体
workbookStylesPart.Stylesheet.Fonts = new Fonts()
{
Count = (UInt32Value)1U
};
Font fontCalibri = new Font(new FontSize() { Val = 11D },
new FontName() { Val = "Calibri" },
new FontFamily() { Val = },
new FontScheme() { Val = FontSchemeValues.Minor }); stylesheet.Fonts.Append(fontCalibri); Font fontCalibri2 = new Font(new FontSize() { Val = 11D },
new FontName() { Val = "华文新魏" },
new FontCharSet() { Val = }
);
workbookStylesPart.Stylesheet.Fonts.Append(fontCalibri2); Font fontCalibri3 = new Font(new FontSize() { Val = 11D },
new FontName() { Val = "华文楷体" },
new FontCharSet() { Val = }
);
workbookStylesPart.Stylesheet.Fonts.Append(fontCalibri3);
#endregion
#region -- 设置边框 --
stylesheet.Borders = new Borders()
{
Count = (UInt32Value)2U
}; //borderID=0
Border borderDefault = new Border(new LeftBorder(), new RightBorder(), new TopBorder() { }, new BottomBorder(), new DiagonalBorder());
stylesheet.Borders.Append(borderDefault); //borderID=1
Border borderContent = new Border(
new LeftBorder(new Color() { Auto = true }) { Style = BorderStyleValues.Thin },
new RightBorder(new Color() { Auto = true }) { Style = BorderStyleValues.Thin },
new TopBorder(new Color() { Auto = true }) { Style = BorderStyleValues.Thin },
new BottomBorder(new Color() { Auto = true }) { Style = BorderStyleValues.Thin },
new DiagonalBorder()
);
stylesheet.Borders.Append(borderContent);
#endregion #region 设置填充色
//fillId,0总是None,1总是gray125,自定义的从fillid =2开始
stylesheet.Fills = new Fills()
{
Count = (UInt32Value)3U
}; //fillid=0
Fill fillDefault = new Fill(new PatternFill() { PatternType = PatternValues.None });
stylesheet.Fills.Append(fillDefault); //fillid=1
Fill fillGray = new Fill();
PatternFill patternFillGray = new PatternFill()
{
PatternType = PatternValues.Gray125
};
fillGray.Append(patternFillGray);
stylesheet.Fills.Append(fillGray); //fillid=2
Fill fillYellow = new Fill();
PatternFill patternFillYellow = new PatternFill(new ForegroundColor() { Rgb = new HexBinaryValue() { Value = "FFFFFF00" } })
{
PatternType = PatternValues.Solid
};
fillYellow.Append(patternFillYellow);
stylesheet.Fills.Append(fillYellow); stylesheet.Borders = new Borders()
{
Count = (UInt32Value)2U
};
#endregion
#region 定义单元格样式
stylesheet.CellFormats = new CellFormats();
stylesheet.CellFormats.Count = ;
//styleIndex =0U
CellFormat cfDefault = new CellFormat();
cfDefault.Alignment = new Alignment();
cfDefault.NumberFormatId = ;
cfDefault.FontId = ;
cfDefault.BorderId = ;
cfDefault.FillId = ;
cfDefault.ApplyAlignment = true;
cfDefault.ApplyBorder = true;
stylesheet.CellFormats.Append(cfDefault); //styleIndex =1U
CellFormat cfContent = new CellFormat();
cfContent.Alignment = new Alignment();
cfContent.NumberFormatId = ;
cfContent.FontId = ;
cfContent.BorderId = ;
cfContent.FillId = ;
cfContent.ApplyAlignment = true;
cfContent.ApplyBorder = true;
stylesheet.CellFormats.Append(cfContent);
#endregion #region 创建多个 sheet 页 //创建多个sheet
for (int s = ; s < ; s++)
{
var tname = $"sheet{s + 1}"; WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
Worksheet worksheet = new Worksheet();
SheetData sheetData = new SheetData(); //创建 sheet 页
Sheet sheet = new Sheet()
{
//页面关联的 WorksheetPart
Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
SheetId = UInt32Value.FromUInt32((uint)s + ),
Name = tname
};
sheets.Append(sheet); #region 创建sheet 行
Row row;
uint rowIndex = ;
//添加表头
row = new Row()
{
RowIndex = UInt32Value.FromUInt32(rowIndex++)
};
sheetData.Append(row);
for (int i = ; i < ; i++)
{
Cell newCell = new Cell
{
CellValue = new CellValue($"row{i + 1}"),
DataType = new EnumValue<CellValues>(CellValues.String)
};
row.Append(newCell);
}
#endregion worksheet.Append(sheetData);
worksheetPart.Worksheet = worksheet;
worksheetPart.Worksheet.Save();
}
#endregion workbook.Append(sheets);
workbookpart.Workbook = workbook; workbookpart.Workbook.Save();
spreadsheetDocument.Close();
}
}

最近用到了OpenXml,但是这真是个很难学习的框架,一不注意,也不给你报错,等生成成功打开的时候才会说格式错误。

目前这个demo还是错误的,后面再学习处理。

最新文章

  1. 阿里云直播 C# SDK 如何使用
  2. Java学习笔记13---一个循环程序的设计范例
  3. &lt;input type=&#39;file&#39;/&gt;把默认样式改成框框
  4. bug__android studio 出现布局文件不提示,且点击代码不能跟踪代码
  5. 使用React重构百度新闻webapp前端
  6. Android -- 获取摄像头帧数据解码
  7. 地图索引 R-tree
  8. 从linux启动到rootfs的挂载分析
  9. sql快速生成大量数据
  10. Nginx+Tomcat实现负载均衡小demo
  11. 《Thinking in Android 9.0 系统开发源码钻研录》
  12. cplusplus标准库
  13. SpringBoot无废话入门02:SpringBoot启动分析
  14. abp中linq的应用
  15. Linux下设置Apache支持Https服务
  16. 总结:独立开发 jar 包组件——功能主要是支持查询数据库的所有表数据
  17. Breaking Down Type Erasure in Swift
  18. mysql中and 和 or 联合使用
  19. 经典 mysql 28道题
  20. spring boot入门笔记 (三) - banner、热部署、命令行参数

热门文章

  1. selenium(5)-解读强制等待,隐式等待,显式等待的区别
  2. Matlab 常用语法速记 1
  3. MyBatis一对多嵌套list返回结果集以及分页查询问题处理
  4. skywalking中文文档
  5. JavaWeb网上图书商城完整项目--day02-25.查询所有分类功能之流程分析
  6. 尚学堂 215 在java中执行JavaScript代码
  7. 原生PHP连接MySQL数据库
  8. Zookeeper分布式过程协同技术 - 部署及设置
  9. 暑假集训Day2 状压dp 特殊方格棋盘
  10. 搭建hadoop伪集群