| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Экспортирование данных Из MsSQL c помощью С# |
| Автор: n00d13 26.7.2005, 15:22 |
| Есть софтина выбираюшие данные из бд на MsSQL через ADO.NET А вот как сделать чтобы она эти данные могла загонять в фаил *.doc/*.xls Вопрос как вот реализовать такую вешЧь с помошью C#??? Спасибо. |
| Автор: Дрон 26.7.2005, 16:43 | ||
При помощи Excel (или Word) automation, естественно Только для этого, к сожалению, нужен установленный офис. ЗЫ: Я бы рекомендовал использовать XML совместно с XSLT для создания читаемых документов на основе выборок. |
| Автор: Дрон 26.7.2005, 17:09 | ||
| Если пользуемся Visual Studio .NET То жмём правой кнопкой на References проекта -> Add Reference... Вкладка COM Там выбираем Microsoft Excel xx Object Library (где xx - версия библиотеки, для Excel 2003 - 11.0) Двойной щелчок по ней, жмём ОК. Теперь в проекте пишем что-то вроде
В итоге в файле C:\test.xls будет таблица умножения Внимание: Если выкидывает исключение Access Denied, то делаем следующие манипуляции: Запускаем из командной строки: dcomcnfg В нём находим Microsoft Excel Application (в WinXP оно в Component Services\Computers\My Computer\DCOM Config) Правой кнопкой -> Properties Вкладка Security -> Группа Access Permissions Устанавливаем Customize, жмём Edit добавляем своего пользователя с флажком Allow. |
| Автор: master of universe 26.7.2005, 21:54 |
| Не надо так извращаться. Пишешь всё в HTML файлик потом открываешь вордом экселем браузером любым другим офисным пакетом. Эксель отлично понимает таблицы. Забудь про ком и совместимости версий оффиса у клиентов. |
| Автор: mr.DUDA 26.7.2005, 23:20 | ||
Изврат, имхо. Эксель стопудово понимает только CSV-формат с разделителями, либо свой "родной" формат. |
| Автор: n00d13 27.7.2005, 15:10 |
| 10x всем за ответы! -- 2Дрон, А можно код с комментами ? зы. НУ ньюб я. 8) |
| Автор: Дрон 27.7.2005, 18:44 | ||||||
Странные для новичка задачи ты ставишь Как создать проект и сделать выборку из базы ты, надеюсь, знаешь?
По хорошему надо MSDN почитать по этому поводу, т.к. реально я этот код набросал методом тыка и детали объяснить не могу. ЗЫ: Я бы всё-таки не извращался а сделал так:
к результату выборки добавил бы нужный xsl и получил бы готовый документ, который можно смотреть хоть в Internet Explorer, хоть в Microsoft Word |
| Автор: n00d13 28.7.2005, 07:08 | ||
ДА.Это сделал. Тогда можно мушшина я вас дальше попытаю? Вопрос в том. Если вы знаете какой код минимизирует и ресторит приложение. А то закрывать как занем а вот такие рюшечки незнаем. Ааа ещё как заставлять приложение сворачивать в трей? Иконка то делаеться а как сворачивать. Незнамо 8) Зарание благодарю. |
| Автор: mr.DUDA 28.7.2005, 08:04 | ||||||
Модератор: Пожалуйста, один топик - один вопрос.
this.WindowState = FormWindowState.Minimized; и this.WindowState = FormWindowState.Normal;
Просто делай this.Visible = false при сворачивании формы, и this.Visible = true при клике по иконке в трее. Чтобы узнать о том, что форма свёрнута, подписывайся на событие Resize:
|
| Автор: n00d13 28.7.2005, 14:27 | ||||
| 2 Дрон, Всё работает только пришлось сделать так
По другому не хотел бегать. А можешь объяснить этот момент.
Что тут каr дышит,почему работает? Просто хотел прикрутить сюда чтобы он высасывал всё из MsSQL через адаптЕр. зы.Кста полазил на MSDN там всё по другому чем у тебя но тоже работает.(странно 8) 2 Модератор, Извиняюсь.Просто тут отвечают на мои глупости я подумал может это временно и завтро не будут вот и оплошал. |
| Автор: Дрон 28.7.2005, 14:35 | ||||
| Microsoft.Office.Interop.Excel -- это вроде от других версий ёкселя. Но разницы никакой. Самая интересная строчка тут:
В ней в ячейку на i-й строке j-м столбце записывается значение i*j. Пусть у тебя есть DataTable с именем tbl. Чтобы перенести её на лист екселя тебе нужно написать что-то вроде (не проверял, но по-идее так):
|
| Автор: n00d13 28.7.2005, 15:12 |
| 2 Дрон, 10x Всё пашит только пришло дополнительно ДатаТаблю делать.(У мну просто были дата сорсы с дбГридо) зы.Чувак я твой фанат! зыы.Ещё раз спасибо! |
| Автор: Дрон 4.8.2005, 19:13 | ||||
| Подниму тему, т.к. нашёл в своём коде недочёт Нужно писать не так:
а вот так:
Источник: http://blogs.msdn.com/ptorr/archive/2004/2/5.aspx |
| Автор: Papirus 5.8.2005, 09:46 | ||||||||
Я наступил на эти грабли, когда сделал такую ссылку. У меня Офис 2003 - у пользователей ХР. Облом. Удали ссылку на EXCEL из References, использовал такое объявление (пардон, что ВБ) и заработало у всех независимо от версии Офиса.
Прикиньте еще такой момент. В прежних версиях ADO для вставки набора записей из рекордсета в EXCEL достаточно было одной строки (оч быстро работает)
где rs - открытый рекордсет. Точно также в массив ячеек можно вставить данные из массива одной командой, определив предварительно область вставки в точности совпадающей с размерностью и количестьвом элементов массива. Вероятно из таблицы датасета тоже можно, но не пробовал - нет пока потребности. Добавлено @ 09:48 CopyFromRecordset пардон так правильно |