Противоположность set(a) & set(b) & set(c)
уже объяснена в этом вопросе , как указано Chris_Rands в комментариях:
>>> (set(a) | set(b) | set(c)) - (set(a) & set(b) & set(c))
{1, 2, 5, 6}
Для действительно длинных списков, используя Numpy должен быть эффективным:
import numpy as np
from functools import reduce
a = [1, 2, 3, 4]
b = [2, 3, 4, 5]
c = [3, 4, 5, 6]
union = reduce(numpy.union1d, (a,b,c))
intersect = reduce(numpy.intersect1d, (a,b,c))
print(numpy.setdiff1d(union, intersect))
Вывод:
[1 2 5 6]
Вам необходимо использовать Workbook.SaveAs
вместо Application.Save
:
Excel.Application app = new Excel.Application();
Excel.Workbook wb = app.Workbooks.Add(missing);
...
wb.SaveAs(@"C:\temp\test.xlsx", missing, missing, missing, missing,
missing, Excel.XlSaveAsAccessMode.xlExclusive,
missing, missing, missing, missing, missing);
Хорошо, вот как Microsoft это делает:
// Save the Workbook and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book1.xls", m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
m_objOpt, m_objOpt, m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();
См. Одну из их статей в КБ s.
Также может помочь установка следующих свойств:
excelApp.DisplayAlerts = false;
excelApp.ScreenUpdating = false;
excelApp.Visible = false;
excelApp.UserControl = false;
excelApp.Interactive = false;
ExcelApp.Interactive = false
подавляет любое диалоговое окно.
excelApp.ActiveWorkbook.SaveAs (exportDirectory)