| 
 | 
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Всем привет. Немного вступления. Я занимаюсь созданием отчётов на VBA + MS SQL(через ADODB драйвер). Сейчас на работе постепенно хотим уходить от Vba, заменив его более современным языком. Мой выбор пал на C# - начал постепенно его изучать. В качестве тренировки хочу написать след. решение: Есть след. задача: Есть большой файл в Excel 100К+ строк на 60 столбцов, который представляет из себя информацию по всем грузоперевозкам в различных аспектах. Файл постоянно видоизменяется в плане кол-ва строк(причём строки могут как добавляться,меняться, так и удаляться полностью) Раньше данную информацию хранили в БД в 1 таблице, но сейчас была проведена реструктуризация хранения информации на сервере и база была нормализована , соответственно информация была распределена по 30 бизнес-таблицам. Сейчас данные из Excel загружаются мною в БД 1 раз в месяц путем полной перезаписи всех данных за определенный период. Ненормализованные данные закачиваются сначала в промежуточную таблицу на сервере, а затем с помощью хранимой процедуры идет запись/удаление во всех бизнес-таблицах БД. Итак я хотел бы сделать приложение для работы с данной таблицей и синхронизацией ее с сервером, чтоб пользователи могли сами вести запись/удаления своих данных в реальном времени(это пока предварительная концепция ): - Собираюсь в Desctop - приложении(в дальнейшем может сделаю надстройку для Excel) сделать загрузку из Excel в GridView c возможностью редактирования данных, с последующей загрузкой на сервер, а также возможностью наоборот выгрузить данные с сервера. При всех операциях пользователь должен работать с шаблоном данных как в Excel(то есть 1 большая ненормализованная таблица, возможно добавлю фильтры по периодам, для сокращения строк) Перерыл весь интернет, но так и не понял, как лучше спроектировать данную систему, в связи с чем хотел бы услышать мнение опытных разработчиков: 1) Какую библиотеку для работы с Excel использовать в проекте, чтобы приложение работало на всех машинах (компы все примерно одинаковые, ms office стоит у всех) 2) Как работать с ненормализованными данными: Необходимо ли разбивать на сущности на клиенте, а затем каждую сущность закачивать в свою таблицу, либо же оставить 1 сущность, а потом ее гдето делить ... 3) Как производить редактирование данных на сервере, ведь назад с сервера я должен выводить в GridView консолидированные данные из view с сервера 4) Почитав соответствующие форумы был поражен кол-вом решений по взаимодействию с БД , какой метод лучше выбрать в моём случае: чистый ado.net, или одну из ORM? 5) Есть ли хорошие книги/статьи по решению подобных кейсов как у меня? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.09.2019, 09:16 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  StarDestroyer89Есть ли хорошие книги/статьи по решению подобных кейсов как у меня? Книги по написанию очередной приблуды для импорта данных из Excel? Вряд-ли :) Статьи... Если в гугле набрать "C# import from excel to datagridview", то получите до фига статей, в том числе и откровенный шлак. Начните с презентации своей концепции пользователям, формализуйте требования. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.09.2019, 09:40 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Я так понял, что импорт из экселя в новой концепции не нужен, нужен интерфейс ВМЕСТО экселя. Но при этом нужен "сырой" нетипизированный ввод. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.09.2019, 10:01 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Shocker.Pro, Я предполагаю, что пользователь будет управлять своими данными через интерфейс: 1) Импорт - Загрузка из Excel нового куска данных в интерфейс в GridView - Первичная валидация данных, информирование об ошибках, исправление ошибок через GridView - Загрузка на сервер 2)Повседневная работа - Выгрузка данных использую фильтры в GridView, корректировка - Загрузка на сервер. Экспорт 3) Выгрузка обратно в Excel за определенный период Пока сам еще не определился - в процессе разработки будет виднее. Пока хотел бы больше разобраться, как выстроить объектную модель и структуру приложения, какие технологии применить. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.09.2019, 10:14 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А насколько нужен редактор сырых данных, если изначальные данные все равно в экселе? К возможностям редактирования экселя ты даже близко не подойдешь. Есть такой вариант, я так делал. Пользователь готовит файл в экселе, пытается его загрузить. Если при загрузке выясняется, что файл неверный, то файл раскрашивается загрузчиком, допустим ошибочные ячейки помечаются красным фоном и добавляется комментарий, описывающий проблему. Либо выводится отчет (например в виде html, чтобы не париться), где в дружественной форме указывается пользователю на его ошибки. А при успешной загрузке пользователю предоставляются уже нормальные редакторы сущностей. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.09.2019, 11:17 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Shocker.Pro, Спасибо, учту. Допустим, файл прошел проверку. Как мне лучше управлять ненормализированными данными? Делить по сущностям(класссам) на клиенте и организовывать связь каждой сущности с соответсвующей таблицей в бд? Далее, допустим, через orm - удалять, изменять, добавлять строки в БД? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.09.2019, 16:09 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  StarDestroyer89Shocker.Pro, Спасибо, учту. Допустим, файл прошел проверку. Как мне лучше управлять ненормализированными данными? Делить по сущностям(класссам) на клиенте и организовывать связь каждой сущности с соответсвующей таблицей в бд? Далее, допустим, через orm - удалять, изменять, добавлять строки в БД? А оно вам надо? У вас же уже есть и промежуточная таблица, и хранимая процедура. Цель-то какая? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.09.2019, 16:14 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  StarDestroyer89Допустим, файл прошел проверку. Как мне лучше управлять ненормализированными данными? Делить по сущностям(класссам) на клиенте и организовывать связь каждой сущности с соответсвующей таблицей в бд? Далее, допустим, через orm - удалять, изменять, добавлять строки в БД?Я бы отдал это на сервер приложения. В твоем описании он не просматривается, как я понимаю, ты хочешь сохранить двухзвенку. Если с нуля - наверное логичнее было бы делать на клиенте, но тут я с Дмитрием согласен - раз есть уже отлаженный механизм, почему бы им не воспользоваться. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.09.2019, 16:28 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Shocker.Pro, так как этот проект я буду делать в качестве тренировки, я его буду делать во внерабочее время. Поэтому у меня нет цели сделать его быстрее.  Есть цель сделать его максимально правильно с точки зрения архитектуры и "пощупать" все соответсвующие технологии. Я так понимаю, что нужно делать трёхзвенку , так как двухзвенка это уже вчерашний век. То есть необходимо остановиться на MVC модели? То есть необходимо делить на клиенте, а потом писать на сервер. Этот подход необходимо применять и при работе с файлом при импорте и при повседневной работе с DataGridView? Как лучше реализовать бизнес-логику - пробегаться циклом по всем строкам Excel файла/DataGridView и формировать сущности в зависимости от столбца или есть более изящный способ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 19.09.2019, 10:49 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  StarDestroyer89Я так понимаю, что нужно делать трёхзвенку , так как двухзвенка это уже вчерашний век.Ну это практичнее и безопаснее, удобнее в управлении версиями. То есть целишься на тонкого клиента (неважно, десктоп или веб) и серверный бэкенд, ну а БД уже за ним и клиенту никак не доступна StarDestroyer89То есть необходимо остановиться на MVC модели?Если клиент десктопный - на сервере у тебя будет вебапи скорее всего. А на клиенте - как хочешь. Можно, например WPF+MVVM StarDestroyer89То есть необходимо делить на клиенте, а потом писать на сервер.При наличии сервера приложения - на сервере приложения скорее всего, нужно подробнее задачу смотреть StarDestroyer89Этот подход необходимо применять и при работе с файлом при импорте и при повседневной работе с DataGridView?Слишком абстрактный вопрос. Какой подход? Что такое "повседневная работа"? StarDestroyer89к лучше реализовать бизнес-логику - пробегаться циклом по всем строкам Excel файла/DataGridView и формировать сущности в зависимости от столбца или есть более изящный способ?Разделить в голове представление и модель данных. При разделении данных на сущности слово DataGridView у тебя нигде не должно фигурировать. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 19.09.2019, 11:45 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  StarDestroyer89проект я буду делать в качестве тренировки, я его буду делать во внерабочее времяВ качестве тренировки в нерабочее время лучше пройти пару онлайн курсов по C#. StarDestroyer89Есть цель сделать его максимально правильно с точки зрения архитектуры и "пощупать" все соответсвующие технологии. Я так понимаю, что нужно делать трёхзвенку , так как двухзвенка это уже вчерашний век. То есть необходимо остановиться на MVC модели? То есть необходимо делить на клиенте, а потом писать на сервер.Архитектура сильно зависит от задачи. Сейчас "данные из Excel загружаются мною в БД 1 раз в месяц". Не вижу тут смысла городить трёхзвенку. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 19.09.2019, 13:36 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  К примеру вот архитектура нашего импорт сервиса: ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 19.09.2019, 13:37 | 
  
  
  
   | 
||
| 
 
Синхронизация книги Excel и БД 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А вот архитектура интерфейса импорта: ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 19.09.2019, 13:38 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=17&msg=39862580&tid=1349103]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    48ms | 
get topic data:  | 
    9ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    43ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 14ms | 
| total: | 147ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.