仅为记录学习工作而写,如果有所贡献,荣幸不已。
最近使用了NPOI对Excel一份模板进行操作,记录一下。
1、为了防止模板已经打开,所以先进行判断关闭;
private void CloseProcess()
{
Process[] processes = Process.GetProcessesByName("EXCEL");
foreach (Process p in processes)
{
if (p.MainWindowTitle == "_3D检查报告.xlsx - Excel")
{
p.Kill();
break;
}
}
System.Threading.Thread.Sleep(1 * 1000);
}
2、根据物理路径打开模板文件
workbook = new XSSFWorkbook(templatePath);
3、根据表名获取到第一张表
sheet = workbook.GetSheet("总表");
我的这份模板有很多副表,需要对总表以及副表进行图片插入
4、进行图片插入
4.1、获取所有副表,并对所有的表进行插入图片;
List<ISheet> allSheet = new List<ISheet>();
int n = workbook.NumberOfSheets;
for (int i = 1; i < n; i++) allSheet.Add(workbook.GetSheetAt(i));
Action<ISheet> addPic = HandleSheet;
allSheet.ForEach(addPic);
4.2、插入图片到指定位置
public void HandleSheet(ISheet _sheet)
{
string sheetName = _sheet.SheetName;
IDrawing patriarch = _sheet.CreateDrawingPatriarch();
XSSFClientAnchor anchor;