|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Имеется DataTable с именем dt и лист Excel c именем Sheet. Для того, чтобы копировать данные из dt в Sheet делаю так: Код: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Но нельзя ли это сделать, минуя стадию пошагового заполнения массива? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2012, 01:34 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
В екселе есть очень приятный метод - CopyFromRecordset. На первый взгляд, то, что вам нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2012, 11:02 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
mds_worldВ екселе есть очень приятный метод - CopyFromRecordset. На первый взгляд, то, что вам нужно. Метод, конечно, приятный. Только он -для рекордсета, а не датасета... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2012, 00:20 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
1) А зачем вообще массив создавать? Есть же коллекция .Cells: Код: vbnet 1. 2. 3. 4. 5.
2) А по поводу прямой записи - так какой VB.NET может быть в Excel? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2012, 08:40 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
AndreTM2) А по поводу прямой записи - так какой VB.NET может быть в Excel? Думаю, что через Interop. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2012, 20:42 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
big-duke, проблема там примерно такая же, как при прямой передаче содержимого многоколоночного List/Combo на лист Excel с помощью VBA. То есть в .DataTable есть, конечно, Rows(), Columns()... но они возвращают объекты .DataRow/Column, где обращение идет не по второму индексу, а по Item(), т.е. массив там не arr(i,j) , а arr(i)(j) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2012, 21:23 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
AndreTM1) А зачем вообще массив создавать? Есть же коллекция .Cells: Код: vbnet 1. 2. 3. 4. 5.
2) А по поводу прямой записи - так какой VB.NET может быть в Excel? 1) Это на порядок дольше займёт времени. Очень ощутимо, если необходимо поместить в екселевскую таблицу один-два десятка записей. 2) VB.Net в данном случае в самом VB.Net-e, просто он создает, открывает и заполняет экселевский файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2012, 00:14 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
[quot big-duke]AndreTMДумаю, что через Interop. Это я и имею в виду ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2012, 00:14 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
P.S. Априори ADO.NET считается лучше, чем ADO. Но я уже в не раз сталкивался с невозможность для ADO.NET сделать то, что может старичок ADO. В VB6 я использовал то, что предложил mds_world, а именно CopyFromRecordset - вставлял в экселевские листы огромные таблицы почти мгновенно. Не ужели ничего похожего нет в ADO.NET? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2012, 00:18 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Добрый день? Данный вопрос как-то решился? Есть какая-то замена copyfromrecordset? Раньше делал очень просто: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Сейчас нету такой приблуды как copyfromrecordset. Какими наименьшими затратами и потерями сбросить таблицу, полученную в результате sql запроса в Excel? Может кто-нибудь подсказать простейший код, так как я не настоящий сварщик и курение справки Microsoft мне не помогло. Заморочек каких то особых не надо. просто полученную таблицу вставить в excel и все. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 14:40 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Сейчас нету такой приблуды как copyfromrecordset. А почему ей таки не воспользоваться ? Сформировать рекордсет и отправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 17:54 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Beliy443Сейчас нету такой приблуды как copyfromrecordset.??? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 18:09 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Может я не правильно выражаюсь. Но visual studio 2012 ругается на строку Код: vbnet 1.
Не понимает он что такое CopyFromRecordset RS. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 19:48 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Beliy443Но visual studio 2012 ругается на строкуа на каком языке вы пишете в visual studio 2012? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 19:59 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
В интеропе всё на месте https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.copyfromrecordset.aspx Какая ошибка хоть выдается? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 20:22 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Сейчас нет под рукой базы sql. поэтому попробовал подключиться просто к файлу excel как к бд. Вообще подчеркивал RS после copyfromrecordset. Но сейчас я закооментировал последние четыре строки и сменил connectionstring. Получилось так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Теперь стал ругаться на строку CON.Open(). С такой ошибкой: Необработанное исключение типа "System.Runtime.InteropServices.COMException" в Microsoft.VisualBasic.dll Дополнительные сведения: Не удается найти указанный поставщик. Вероятно, он установлен неправильно. Что еще...в самом верху кода есть строка Imports Microsoft.Office.Interop.Excel (но она почему то подчеркнута зеленым) Что то я совсем запутался... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 20:40 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Beliy443но она почему то подчеркнутаохохох.... подчеркнута зеленым, подчеркнута красным - детский сад. Ну так посмотрите, в чем проблема-то! Мышь наведите или Error List откройте. Звонит главбух производства сегодня, и заявляет: - Володь... Шото у нас во всем отделе... Тэлэвизоры перекрестились! И попробуй тут сразу догадайся, что у них сеть пропала... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 20:46 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Вы не смейтесь, пожалуйста. Я в первом сообщении уже сказал, что я не настоящий сварщик.... С Imports Microsoft.Office.Interop.Excel разобрался. Добавил ссылку на Microsoft Excel 15.0 Object Library. И стало нормально. На CON.Open() больше не ругается. Опять ругается на строку Excel_Doc.Range("a1").CopyFromRecordset RS. Такая ошибка: Необработанное исключение типа "System.MissingMemberException" в Microsoft.VisualBasic.dll Дополнительные сведения: Общий член "Range" для типа "Workbook" не найден. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 21:07 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Beliy443Общий член "Range" для типа "Workbook" не найден.А что непонятно в этом сообщении? Range есть у листа, а никак не у книги. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 21:12 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Огромное Вам спасибо. Все получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 21:21 |
|
Из Datatable в Excel
|
|||
---|---|---|---|
#18+
Beliy443Огромное Вам спасибо. Все получилось.Пожалуста. В следующий раз читайте сообщения об ошибках - проблема решится гораздо быстрее. А лучше работать через Interop.Excel http://www.cyberforum.ru/blogs/100536/blog1471.html А может вам вообще не нужно взаимодействие с экселем https://msdn.microsoft.com/en-us/library/hh180830(v=office.14).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 21:25 |
|
|
start [/forum/topic.php?fid=60&fpage=19&tid=2155426]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
1ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 312ms |
total: | 442ms |
0 / 0 |