ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
Document doc = commandData.Application.ActiveUIDocument.Document;
//Коллектор
FilteredElementCollector collector = new FilteredElementCollector(doc);
IList<Element> _elementsDB = collector.OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType().ToElements();
ICollection<ElementId> _elementsIds = collector.OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType().ToElementIds();
List<double> _pHeight = new List<double>();
foreach (Element e in _elementsDB)
{
if (e.LookupParameter("Неприсоединенная высота") != null)
{
_pHeight.Add(UnitUtils.ConvertFromInternalUnits(e.LookupParameter("Неприсоединенная высота").AsDouble(), DisplayUnitType.DUT_MILLIMETERS));
}
else
{
continue;
}
}
//Эксель
ExcelPackage package = new ExcelPackage();
ExcelWorksheet ws = package.Workbook.Worksheets.Add("Sheet");
var file = new FileInfo(@"D:\Walls.xlsx");
using (ExcelRange Rng = ws.Cells["A1:E2"])
{
ExcelTable table = ws.Tables.Add(Rng, "Table");
table.Columns[0].Name = "Name";
table.Columns[1].Name = "ID";
table.Columns[2].Name = "Height";
}
int col = 1;
for (int row = 2; row - 1 <= _elementsDB.Count; row++)
{
ws.Cells[row, col].Value = _elementsDB[row - 2].Name;
}
int col2 = 2;
for (int row = 2; row - 1 <= _elementsIds.Count; row++)
{
ws.Cells[row, col2].Value = _elementsIds.ElementAt(row - 2);
}
int col3 = 3;
for (int row = 2; row - 1 <= _elementsIds.Count; row++)
{
ws.Cells[row, col3].Value = _pHeight[row - 2];
}
package.SaveAs(new FileInfo(file.ToString()));