ExportBomToExcel
This commit is contained in:
69
ExportDXF/ExportBomToExcel.cs
Normal file
69
ExportDXF/ExportBomToExcel.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -92,6 +92,7 @@
|
||||
<Compile Include="BendOrientation.cs" />
|
||||
<Compile Include="Bounds.cs" />
|
||||
<Compile Include="DrawingInfo.cs" />
|
||||
<Compile Include="ExportBomToExcel.cs" />
|
||||
<Compile Include="Extensions.cs" />
|
||||
<Compile Include="ItemExtractor.cs" />
|
||||
<Compile Include="Forms\ViewFlipDeciderComboboxItem.cs" />
|
||||
|
||||
@@ -401,7 +401,9 @@ namespace ExportDXF.Forms
|
||||
var drawingInfo = DrawingInfo.Parse(prefix);
|
||||
var bomName = drawingInfo != null ? string.Format("{0} {1} BOM", drawingInfo.JobNo, drawingInfo.DrawingNo) : "BOM";
|
||||
var bomFile = Path.Combine(savePath, bomName + ".xlsx");
|
||||
CreateBOMExcelFile(bomFile, items.ToList());
|
||||
|
||||
var excelReport = new ExportBomToExcel();
|
||||
excelReport.CreateBOMExcelFile(bomFile, items.ToList());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -573,63 +575,6 @@ namespace ExportDXF.Forms
|
||||
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()
|
||||
{
|
||||
string path = null;
|
||||
|
||||
Reference in New Issue
Block a user