лучший способ программно изменить электронные таблицы Excel

Давайте попробуем это с минимальным примером (добавленным через консоль в Kibana, но вы сможете легко изменить его на простые команды curl):

PUT test
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "_doc": {
      "dynamic": "strict",
      "properties": {
        "family name": {
          "type": "text",
          "index": "true"
        },
        "Firstname": {
          "type": "text",
          "index": "true"
        },
        "Date of birth": {
          "type": "text",
          "index": "false"
        }
      }
    }
  }
}

PUT /test/_doc/1
{
  "family name": "foo",
  "Firstname": "bar",
  "Date of birth": "baz"
}

Это работает для меня. Я могу найти foo и bar, но не baz:

enter image description here

Также после обновления шаблона индекса дата поле рождения не может быть ни найдено, ни найдено:

enter image description here

Некоторые быстрые наблюдения:

  1. [114 ] true или false . Это в другой области, поэтому, вероятно, не связано с вашей проблемой.
  2. 1113 Если бы вы не хотели страдать в будущем, я бы избегал пробелов в именах полей. Я могу видеть, что многие вещи идут не так, как надо.

7
задан Community 23 May 2017 в 12:25
поделиться

6 ответов

В итоге я использовал Aspose.Cells, как я упоминал в своем исходном посте, поскольку это казалось самым простым путем. Я очень доволен тем, как все получилось, и их поддержка очень хорошая. Мне пришлось создать вокруг него оболочку на C #, которая экспортировала COM-интерфейс в мое приложение C ++.

0
ответ дан 7 December 2019 в 10:09
поделиться

Самое безопасное предложение состоит в том, чтобы просто использовать OLE. Это использует COM, который не требует.NET вообще.

http://en.wikipedia.org/wiki/OLE_Automation <-примерно на полпути вниз является примером C++.

Вам, вероятно, придется перенести несколько технических возможностей в функции для удобства использования, но это действительно не ужасно для работы с.

Править: Просто знайте, что Вам нужна копия Excel для него для работы. Кроме того, существует некоторая первая сторона.h файлы, которые можно найти характерным для Excel. (это все объяснено в статье Wikipedia),

3
ответ дан 7 December 2019 в 10:09
поделиться

SpreadsheetGear для.NET обработает Ваши требования и имеет API, который очень похож на Excel.

При вставке ячеек определенные имена (и любые другие формулы / диаграммы / и т.д....) будут автоматически зафиксированы до ссылки новый диапазон (как они были бы в Excel). Таким образом, Вы не должны были бы обновлять свои определенные имена (хотя существует полная поддержка создания и обновления определенных имен если, именно это Вы хотите сделать).

SpreadsheetGear является компонентом.NET, но можно создать собственную обертку, которая является вызываемой от C++.

Вы видите то, что наши клиенты говорят и загружают свободный, полностью функциональный evalution здесь.

1
ответ дан 7 December 2019 в 10:09
поделиться

Вы уже попытались использовать COM-интерфейсы Excel? Obviously Excel должен быть установкой на машине, и это - боль для контакта с...

0
ответ дан 7 December 2019 в 10:09
поделиться

Я не знаю, является ли это опцией для Вас, но новые офисные 2007 форматы находятся в заархивированном формате XML, который делает ее очень выполнимой, чтобы сделать Ваши собственные модификации. Посмотрите здесь для спецификаций.

2
ответ дан 7 December 2019 в 10:09
поделиться

Я утверждал бы, что решением .NET со взаимодействующим с COM для соединения в Ваше приложение C++ является лучшее решение. Больше чем за десять лет работы с ними я никогда не видел автоматизацию COM Excel, который не пропустил память где-нибудь.

Если необходимо автоматизировать Excel, я рекомендую Инструменты Visual Studio для Office. Если Вы не должны автоматизировать, только изменить файлы, и те файлы могут быть при исполнении служебных обязанностей формат 2007 года, Вы - более обеспеченное нахождение библиотеки, которая управляет файлами непосредственно вместо того, чтобы открытие Excel, чтобы сделать это.

0
ответ дан 7 December 2019 в 10:09
поделиться
Другие вопросы по тегам:

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