#c# #.net #wpf #excel-interop
#c# #.net #wpf #excel-взаимодействие
Вопрос:
Этот вопрос может повторяться, но я пока не смог получить решение относительно моей проблемы. Я новичок в Interop. Я использую файл Excel (в качестве базы данных). Вот представление данных в файле Excel
в моих данных, если идентификатор карты повторяется, мне нужно увеличить значение ‘1’ в счетчике в той же строке, аналогично мне нужно получить IP-адрес из той же строки..
Я использую подход Interop Excel для вставки данных в файл Excel.. Пожалуйста, скажите мне, как я могу выполнить эту операцию обновления для этого файла Excel через C # (WPF)
Извините за плохой английский..
Спасибо
Комментарии:
1. Использование Excel в качестве базы данных усложняет задачу. Попробуйте использовать базу данных, mssql-express или ms-access, например.
2. Возможно, есть вариант преобразовать его в csv?
3. Вы правы.. но это требование клиента использовать Excel
4. Вероятно, было бы проще использовать реальное хранилище данных, как предложил Стефан, и сгенерировать отчет Excel для вашего клиента.
5. Есть лучшая альтернатива, чем использование interop для управления файлами Excel. Для вашего варианта использования я предлагаю сохранить ваши данные в базе данных mssql и создать отчет Excel. Но если вам абсолютно необходимо сделать это на c #, по крайней мере, используйте OpenXML api, а не interop.
Ответ №1:
Я рекомендую использовать закрытый XML
Вы записываете данные в файл напрямую и вам не нужен Excel. Для работы файла Excel потребуется последняя версия (стандарт open xml).
Комментарии:
1. Вы также можете использовать библиотеку Microsoft interop library, если у вас установлен office. Закрытый XML немного более многословен, но, как сказал Клейтон, вам не нужен установленный Excel для его использования. Я предпочитаю закрытый XML.
Ответ №2:
Epplus.dll или npoi.dll также будет считывать / записывать в файлы Excel без excel.
Ответ №3:
Сохраните данные в файле XML или JSON, затем, когда вы захотите их визуализировать, вы создадите файл Excel из этих данных, так что у вас будет очень легкий файл, который при желании легко прочитать и обновить.
Ответ №4:
Я не делал этого специально через wpf, но вы можете получить доступ к командлетам powershell через .в net и powershell есть команды для извлечения и записи данных Excel.
Тем не менее, мой опыт показывает, что это очень утомительно и несовместимо с ошибками. Я бы сказал вашему клиенту, что использование файла Excel в качестве базы данных невозможно и, безусловно, может привести к сбою на практике.
Во-первых, вы столкнетесь с ограничениями на чтение / запись, если оно используется чем-либо другим.
Ответ №5:
Если вы не возражаете против использования коммерческих библиотек, вы можете попробовать использовать Aspose.Ячейки. Он имеет богатый cells API и способен работать без Excel interop API.