ExportBomToExcel

This commit is contained in:
AJ
2021-03-04 20:49:07 -05:00
parent 4fbcf9f4e1
commit eee6bfdff3
3 changed files with 73 additions and 58 deletions

View File

@@ -0,0 +1,69 @@
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.IO;
namespace ExportDXF
{
public class ExportBomToExcel
{
public string TemplatePath
{
get { return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Templates", "BomTemplate.xlsx"); }
}
public void CreateBOMExcelFile(string filepath, IList<Item> items)
{
File.Copy(TemplatePath, filepath, true);
var newFile = new FileInfo(filepath);
using (var pkg = new ExcelPackage(newFile))
{
var workbook = pkg.Workbook;
var partsSheet = workbook.Worksheets["Parts"];
for (int i = 0; i < items.Count; i++)
{
var item = items[i];
var row = i + 2;
var col = 1;
partsSheet.Cells[row, col++].Value = item.ItemNo;
partsSheet.Cells[row, col++].Value = item.FileName;
partsSheet.Cells[row, col++].Value = item.Quantity;
partsSheet.Cells[row, col++].Value = item.Description;
partsSheet.Cells[row, col++].Value = item.PartName;
partsSheet.Cells[row, col++].Value = item.Configuration;
if (item.Thickness > 0)
partsSheet.Cells[row, col].Value = item.Thickness;
col++;
partsSheet.Cells[row, col++].Value = item.Material;
if (item.KFactor > 0)
partsSheet.Cells[row, col].Value = item.KFactor;
col++;
if (item.BendRadius > 0)
partsSheet.Cells[row, col].Value = item.BendRadius;
}
for (int i = 1; i <= 8; i++)
{
var column = partsSheet.Column(i);
if (column.Style.WrapText)
continue;
column.AutoFit();
column.Width += 1;
}
workbook.Calculate();
pkg.Save();
}
}
}
}

View File

@@ -92,6 +92,7 @@
<Compile Include="BendOrientation.cs" /> <Compile Include="BendOrientation.cs" />
<Compile Include="Bounds.cs" /> <Compile Include="Bounds.cs" />
<Compile Include="DrawingInfo.cs" /> <Compile Include="DrawingInfo.cs" />
<Compile Include="ExportBomToExcel.cs" />
<Compile Include="Extensions.cs" /> <Compile Include="Extensions.cs" />
<Compile Include="ItemExtractor.cs" /> <Compile Include="ItemExtractor.cs" />
<Compile Include="Forms\ViewFlipDeciderComboboxItem.cs" /> <Compile Include="Forms\ViewFlipDeciderComboboxItem.cs" />

View File

@@ -401,7 +401,9 @@ namespace ExportDXF.Forms
var drawingInfo = DrawingInfo.Parse(prefix); var drawingInfo = DrawingInfo.Parse(prefix);
var bomName = drawingInfo != null ? string.Format("{0} {1} BOM", drawingInfo.JobNo, drawingInfo.DrawingNo) : "BOM"; var bomName = drawingInfo != null ? string.Format("{0} {1} BOM", drawingInfo.JobNo, drawingInfo.DrawingNo) : "BOM";
var bomFile = Path.Combine(savePath, bomName + ".xlsx"); var bomFile = Path.Combine(savePath, bomName + ".xlsx");
CreateBOMExcelFile(bomFile, items.ToList());
var excelReport = new ExportBomToExcel();
excelReport.CreateBOMExcelFile(bomFile, items.ToList());
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -573,63 +575,6 @@ namespace ExportDXF.Forms
return modelChanged; return modelChanged;
} }
private void CreateBOMExcelFile(string filepath, IList<Item> items)
{
var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Templates", "BomTemplate.xlsx");
File.Copy(templatePath, filepath, true);
var newFile = new FileInfo(filepath);
using (var pkg = new ExcelPackage(newFile))
{
var workbook = pkg.Workbook;
var partsSheet = workbook.Worksheets["Parts"];
for (int i = 0; i < items.Count; i++)
{
var item = items[i];
var row = i + 2;
var col = 1;
partsSheet.Cells[row, col++].Value = item.ItemNo;
partsSheet.Cells[row, col++].Value = item.FileName;
partsSheet.Cells[row, col++].Value = item.Quantity;
partsSheet.Cells[row, col++].Value = item.Description;
partsSheet.Cells[row, col++].Value = item.PartName;
partsSheet.Cells[row, col++].Value = item.Configuration;
if (item.Thickness > 0)
partsSheet.Cells[row, col].Value = item.Thickness;
col++;
partsSheet.Cells[row, col++].Value = item.Material;
if (item.KFactor > 0)
partsSheet.Cells[row, col].Value = item.KFactor;
col++;
if (item.BendRadius > 0)
partsSheet.Cells[row, col].Value = item.BendRadius;
col++;
}
for (int i = 1; i <= 8; i++)
{
var column = partsSheet.Column(i);
if (column.Style.WrapText)
continue;
column.AutoFit();
column.Width += 1;
}
workbook.Calculate();
pkg.Save();
}
}
private string UserSelectFolder() private string UserSelectFolder()
{ {
string path = null; string path = null;