[Databases] Четене на excel файлове от zip файл.


1
Та изникна доста интересен проблем, докато пробвах някои неща за teamwork-a - използвам DotNetZip за четенето съдържанието на zip файла, но въпроса е как да мога да прочета съдържанието на excel файла през ADO.NET ? Пробвах да му задам пътя на до excel файла без да разархивирам архива, но не го хареса.
Пробвах и да разархивирам файла и после да обикалям по директориите и работи, но не мисля, че това е начина да се прави.
Ще се радвам ако някои удари едно рамо :)

в Databases от Teodor92 (13062 точки)


Отговори



1
Мисля, че трябва да дезархивираш файла и тогава да прочетеш съдържанието.
Нека още някой сподели.
А проблемът сигурно е в това, че архивът сигурно не съдържа един ексел файл, а даже и директории?
Ако е така, е гадничко (:

от ellapt (6303 точки)


0
Не не, има всичко вътре, проблема е че си няма и на представа как да прочета файловете от него т.к. ако му задам connection string директно в файла гърми с Exception.

от Teodor92 (13062 точки)

0
Може да ти се наложи да използваш цикъл в stored procedure и да ги обединиш в зависимост от анализа, който правиш. Ако можеш да достъпиш файла не по име, а по номера му в директорията, ще те улесни.

от ellapt (6303 точки)


2

Ето примерен код то единия example

private void MyExtract()
  {
      string zipToUnpack = "C1P3SML.zip";
      string unpackDirectory = "Extracted Files";
      using (ZipFile zip1 = ZipFile.Read(zipToUnpack))
      {
          // here, we extract every entry, but we could extract conditionally
          // based on entry name, size, date, checkbox status, etc.  
          foreach (ZipEntry e in zip1)
          {
            e.Extract(unpackDirectory, ExtractExistingFileAction.OverwriteSilently);
          }
       }
    }

В общи линия вземаш zip-a и го разархивираш в дадена директория, а от там вече си действаш с ADO.NET  




0
Да и аз стигнах до това решение и си работи, но въпроса ми е дали има начин да ги чета без да разархивирам файла.

от Teodor92 (13062 точки)

0
На мен поне не ми е известно да съществува такъв начин.

от ellapt (6303 точки)



1
Не съм експерт точно в това, но мисля, че дори когато четеш през WinRar, файловете се резархивират при опит за отваряне. Само не знам дали се случва в RAM-a или в някаква temp директория.

от petarpenev (3148 точки)


2
На мен най-удачно ми звучи да разархивираш файла някъде (temp папка), след което да си ползваш таблиците и накрая да затриеш всичко, оставяйки само архива.

от ivaylo.kenov (30760 точки)