Действительно ли развертывание Office 2007 PIA возможно без Office 2007?

Если классы Car и Computer еще не реализуют общий интерфейс, и вам нужно сделать это без изменения классов, вы можете передать дополнительный параметр, функцию для извлечения String из перечислите элементы:

private <T> List<T> removeSameColor(List<T> list, Function<? super T, String> fn) {
    Set<String> colorSet = new HashSet<>();
    Iterator<T> iterator = list.iterator();
    while (iterator.hasNext()) {
        if(!colorSet .isEmpty() && colorSet .contains(fn.apply(iterator.next()))) {
            iterator.remove();
        }
        else{
            colorSet.add(fn.apply(iterator.next()));
        }
    }
    return list;
}

и вызывайте как:

removeSameColor(listOfCars, Car::getColour);
removeSameColor(listOfComputers, Computer::getColour);

Обратите внимание, что вы дважды вызываете iterator.next() в теле цикла. Возможно, вы захотите сохранить его в переменной:

T value = iterator.next();
if (!colorSet.isEmpty() && colorSet.contains(fn.apply(value))) {
  iterator.remove();
} else {
  colorSet.add(fn.apply(value));
}

На самом деле вы можете просто сохранить String color = fn.apply(iterator.next()), а затем использовать его вместо fn.apply(value).

А затем вы можете еще больше упростить цикл, используя возвращаемое значение Set.add:

while (iterator.hasNext()) {
  String color = fn.apply(iterator.next());
  if (!colorSet.add(color)) {
    iterator.remove();
  }
}
5
задан Esteban Küber 7 August 2009 в 13:04
поделиться

4 ответа

Для использования VSTO, необходимо было установить Office. Единственный PIA's VSTO обеспечивает контейнер между.NET и COM-интерфейсами, которые выставляет Office. Таким образом, PIA's ничего не может сделать w/o Office.

8
ответ дан 13 December 2019 в 19:38
поделиться

Что Вы хотите сделать с Primary Interop Assemblies точно? Я думаю, что необходимо разъяснить вопрос немного.

Если Вы планируете создание каких-либо вызовов метода PIA DLLs Microsoft Office без Office, установил Вас, может ожидать, что Ваш код аварийно завершится с COMException, когда Вы выполняете его, так как Office не должен там взаимодействовать с.

1
ответ дан 13 December 2019 в 19:38
поделиться

примечание: можно генерировать docx (Word 2007) файлы без офиса.

1
ответ дан 13 December 2019 в 19:38
поделиться

Если то, что Вы хотите сделать, создают документы Word без MS Word, устанавливаемого затем, Ваш наилучший вариант состоит в том, чтобы использовать одну из доступных программ, чтобы сделать это. Это обычно, как документы Word/Excel создаются на веб-сервере, например.

Для генерации документов MS Word, мы использовали и Syncfusion DocIO (и XlsIO для Excel) и OfficeWriter, и они были намного легче и буквально в 5 - 30 раз быстрее в генерации документов, чем MS Word (в зависимости от сложности документа). Однако эти инструменты не являются бесплатными. Я предполагаю, что теоретически возможно генерировать docx файлы вручную (как подсказал Tracker1), но это будет большой работой, если не будут свободные библиотеки для помощи в выполнении этого.

1
ответ дан 13 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

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