forked from ddrilling/AsbCloudServer
Added advanced union logic for files with small amount of empty columns
This commit is contained in:
parent
6c2e58a14d
commit
99c805c7d4
@ -29,6 +29,15 @@ namespace ConsoleApp1
|
||||
sheet.Pictures.Delete(n);
|
||||
}
|
||||
|
||||
private static IXLRange GetCellsRange(IXLWorksheet sheet)
|
||||
{
|
||||
var firstTableCell = sheet.FirstCellUsed();
|
||||
var lastTableCell = sheet.LastCellUsed();
|
||||
var rngData = sheet.Range(firstTableCell.Address, lastTableCell.Address);
|
||||
|
||||
return rngData;
|
||||
}
|
||||
|
||||
static void Main(/*string[] args*/)
|
||||
{
|
||||
var sourceExcelPaths = new List<string>
|
||||
@ -36,8 +45,8 @@ namespace ConsoleApp1
|
||||
//@"D:\excels\excel1.xlsx",
|
||||
//@"D:\excels\excel2.xlsx"
|
||||
//@"D:\excels\e1.xlsx",
|
||||
//@"D:\excels\e2.xlsx",
|
||||
//@"D:\excels\e3.xlsx",
|
||||
@"D:\excels\e2.xlsx",
|
||||
@"D:\excels\e3.xlsx",
|
||||
@"D:\excels\e4.XLSX",
|
||||
@"D:\excels\e5.XLSX",
|
||||
@"D:\excels\e6.XLSX"
|
||||
@ -55,12 +64,10 @@ namespace ConsoleApp1
|
||||
|
||||
foreach (var sheet in sourceExcelFile.Worksheets)
|
||||
{
|
||||
//var columnsToDelete = sheet.Columns().Skip(sheet.ColumnsUsed().Count());
|
||||
|
||||
//foreach (var d in columnsToDelete)
|
||||
// d.Delete();
|
||||
|
||||
if (sheet.Columns().Count() > maxAllowedColumns &&
|
||||
// Если в файле очень много колонок и многие из них пустые -
|
||||
// предлагаем удалить их вручную или пытаемся копировать
|
||||
// ячейки попорядку (не красиво). Красиво не получится.
|
||||
if (sheet.Columns().Count() > maxAllowedColumns &&
|
||||
sheet.Columns().Count() / sheet.ColumnsUsed().Count() > 5)
|
||||
{
|
||||
Console.WriteLine($"В файле {Path.GetFileName(sourceExcelPath)} " +
|
||||
@ -75,9 +82,7 @@ namespace ConsoleApp1
|
||||
if (res != "y")
|
||||
return;
|
||||
|
||||
var firstTableCell = sheet.FirstCellUsed();
|
||||
var lastTableCell = sheet.LastCellUsed();
|
||||
var rngData = sheet.Range(firstTableCell.Address, lastTableCell.Address);
|
||||
var rngData = GetCellsRange(sheet);
|
||||
|
||||
RemovePicturesFromSheet(sheet);
|
||||
|
||||
@ -86,6 +91,22 @@ namespace ConsoleApp1
|
||||
|
||||
GC.Collect();
|
||||
}
|
||||
// Если колонок в файле немного, но среди них также есть пустые -
|
||||
// проще удалить ненужные колонки и скопировать лист красиво.
|
||||
else if (sheet.Columns().Count() < maxAllowedColumns &&
|
||||
sheet.Columns().Count() / sheet.ColumnsUsed().Count() > 2)
|
||||
{
|
||||
RemovePicturesFromSheet(sheet);
|
||||
|
||||
var columnsToDelete = sheet.Columns().Skip(sheet.ColumnsUsed().Count());
|
||||
|
||||
foreach (var d in columnsToDelete)
|
||||
d.Delete();
|
||||
|
||||
sheet.CopyTo(resultExcelFile, sheet.Name);
|
||||
GC.Collect();
|
||||
}
|
||||
// Если по колонкам все хорошо, копируем лист красиво.
|
||||
else
|
||||
{
|
||||
RemovePicturesFromSheet(sheet);
|
||||
|
Loading…
Reference in New Issue
Block a user