C# и проблема Excel Interop, Сохранив файл Excel, не гладкий

Противоположность 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]

10
задан 24 April 2009 в 12:44
поделиться

4 ответа

Вам необходимо использовать 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);
15
ответ дан 3 December 2019 в 14:06
поделиться

Хорошо, вот как 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.

2
ответ дан 3 December 2019 в 14:06
поделиться

Также может помочь установка следующих свойств:

excelApp.DisplayAlerts = false;
excelApp.ScreenUpdating = false;
excelApp.Visible = false;
excelApp.UserControl = false;
excelApp.Interactive = false;
15
ответ дан 3 December 2019 в 14:06
поделиться

ExcelApp.Interactive = false подавляет любое диалоговое окно.

excelApp.ActiveWorkbook.SaveAs (exportDirectory)

1
ответ дан 3 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: