Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Как работать с xls?


Автор: krewin 16.9.2011, 12:23
Пожалуста подскажите как xls документ перевести в массив или проще в DataGridView1 ??

Автор: diadiavova 16.9.2011, 13:26
Тут нужны пояснения. Если у тебя просто есть документ и нужны данные с него, то проще всего сохранить с помощью самой программы эксель в формате, который легко прочитать(CSV или XML). Если речь о том, чтобы запихнуть такую возможность в свою программу, то тут зависит от того, какая версия документа, если 2007 и позднее, то там есть возможность работать либо с OpenXML SDK, либо напрямую с XML данными(немного сложнее), для более ранних версий придется ставить офис и использовать его библиотеки.

Автор: Данкинг 16.9.2011, 13:29
Открыть документ как OLE-объект и далее построчно по нему пройтись. smile 

Автор: diadiavova 16.9.2011, 13:36
Цитата(Данкинг @  16.9.2011,  14:29 Найти цитируемый пост)
Открыть документ как OLE-объект и далее построчно по нему пройтись.

Ну это если офис установлен и на компе есть соответствующие компоненты. Или есть еще какой-то способ?

Автор: Данкинг 16.9.2011, 14:53
Цитата(diadiavova @  16.9.2011,  14:36 Найти цитируемый пост)
Ну это если офис установлен и на компе есть соответствующие компоненты.

Да, разумеется, если Excel установлен... И всё, а какие ещё компоненты могут требоваться в данном случае.

Автор: diadiavova 16.9.2011, 14:58
Цитата(Данкинг @  16.9.2011,  15:53 Найти цитируемый пост)
И всё, а какие ещё компоненты могут требоваться в данном случае.

Ну я же пояснил все в первом посте. А условие, что эксель установлен не всегда выполнимо: на целевой машине его может и не быть. OpenXml SDK в свою очередь можно распространять со своим приложением и это не требует дополнительных лицензионных отчислений от конечного пользователя. Да и если проблема действительно только в том, чтобы перевести существующие данные в свою программу, то можно сохранить в удобном формате и прочитать, это тоже вариант.

Автор: Данкинг 16.9.2011, 15:03
Цитата(diadiavova @  16.9.2011,  15:58 Найти цитируемый пост)
Ну я же пояснил все в первом посте. А условие, что эксель установлен не всегда выполнимо:

Я в смысле, если Эксель установлен, то этого уже достаточно.
Цитата(diadiavova @  16.9.2011,  15:58 Найти цитируемый пост)
Да и если проблема действительно только в том, чтобы перевести существующие данные в свою программу, то можно сохранить в удобном формате 

Так это пользователю сохранять надо будет самому, а потом уже юзать программу с сохранённым файлом. smile 

Автор: diadiavova 16.9.2011, 15:58
Цитата(Данкинг @  16.9.2011,  16:03 Найти цитируемый пост)
Так это пользователю сохранять надо будет самому, а потом уже юзать программу с сохранённым файлом.

Я сказал как раз не о том случае, когда это предоставляется пользователю. Бывает же, что нужные данные просто надо забить в программу во время разработки. ТС ведь ничего не пояснил

Автор: krewin 16.9.2011, 16:54
А кто в курсе о библиотеке Microsoft Word  9.0 Object Library. Раньше в VB6 можно было создавать докуметы типа ворда, но сейчас про net ничего не знаю.


Автор: diadiavova 16.9.2011, 17:01
Да все это тоже можно. Даже есть набор инструментов VSTO. Но это будет работать только на тех машинах, на которых офис установлен. А так подключи библиотеку к проекту и работай с ней без проблем. Если знаешь как это делалось раньше, то разберешься быстро.

Автор: krewin 17.9.2011, 16:44
Возникли первые проблемы

    Не удается найти тип взаимодействия, соответствующий внедренному типу "Microsoft.Office.Interop.Excel.Application". Отсутствует ссылка на сборку?    C:\Users\007\AppData\Local\Temporary Projects\ConsoleApplication1\Module1.vb    

Код

Imports Microsoft.Office.Interop.Excel
Module Module1

    Sub Main()
        Dim aa As New Application

    End Sub

End Module


загружал Microsoft.Office.Tools.Excel
установлен 2010 Excel

вот пример
http://base.vingrad.ru/view/2869-Word-Excel---VB-NET

Автор: diadiavova 17.9.2011, 16:53
krewin, возможно из-за конфликта имен: класс Application есть и в пространстве System.Windows.Forms, а это пространство импортируется на уровне проекта. Или напиши имя класса полностью или для экселевского пространства создай псевдоним и используй его при указании типов.

Автор: krewin 17.9.2011, 19:40
нет не работает 

 
Код

 Private _xlApplication As New Microsoft.Office.Interop.Excel.Application 'Приложение Excel


ошибка все таже

Автор: diadiavova 18.9.2011, 11:20
krewin, Скопировал тот код(точнее ту его часть, что для чтения), все работает.

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

Автор: krewin 18.9.2011, 19:13
Да все правильно у меня нет в сылках C:\Windows\assembly\GAC_MSIL\Office\14.0.0.0__71e9bce111e9429c\Office.dll странно нет даже в списках ее надо добовлять отдельно через проводник

Автор: diadiavova 19.9.2011, 18:26
Цитата(krewin @  18.9.2011,  20:13 Найти цитируемый пост)
странно нет даже в списках ее надо добовлять отдельно через проводник 

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)