Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Как экспортировать в Excel


Автор: a_r_e 2.11.2007, 09:42
Добрый день всем!!!
Подскажите плиз, как сделать экспорт данных из Form в Excel , через кнопку, так чтобы инфа в нумерике, лейбле или текст боксе например сохранялась в такой-то ячейке в Экселе...???
Код

private void button1_Click(object sender, EventArgs e)
{
А что дальше...
}



Добавлено через 54 секунды
Я так понимаю, что надо создать шаблон в Excel???

Автор: moric83 2.11.2007, 10:37
Это называется Excel Automation.
Вот http://www.codeproject.com/csharp/Simple_Excel_Automation.asp

Автор: a_r_e 2.11.2007, 10:54
А ArrayList обязательно, или мы можем поместить внужные ячеки Excel все что нам надо!!!

Автор: farad 2.11.2007, 11:56
Цитата(a_r_e @  2.11.2007,  10:54 Найти цитируемый пост)
А ArrayList обязательно
 не обязательно. Кстати в примере от moric83, значения присваиваются конкретным ячейкам. Это годится когда нужно заполнить десяток ячеек. А если тебе нужно заполнить таблицу в несколько тысяч строк то получишь конкретные тормоза. Для экспорта в эксель лучше использовать свойство Formula объекта Range - тормозов не будет. Примерно так:
Код

private Excel.Range PutArrayToWorkSheet(Excel.Worksheet wsh, int StartX, int StartY,object[,] data)
        {
            Excel.Range rng = wsh.get_Range(
                    wsh.Cells[StartY, StartX],
                    wsh.Cells[StartY + (data.GetLength(0)-1),
                    StartX + (data.GetLength(1) - 1)]);
            rng.Formula = data;
            return rng;
        }

Автор: a_r_e 2.11.2007, 13:51
Так как с кнопки открывать Excel

Автор: Lightwave 16.11.2007, 17:18
1. Скачиваешь с сайта майкрософт дополнение к студии для программирования по Офис (VSTO)
2. Скачиваешь, PIA. Необходим, без него бывает не идёт, это "Бермуды".
3. 

Код

using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;

//Где то в коде пишешь это:
Excel.Application xl = new Excel.Application();
xl.Show(); // не уверен что именно так пишется, но там исходя из логики можно найти подходящий //метод.

Автор: AET 23.12.2007, 17:06
народ нужна помащ ни как немогу разобратся с ексель как можно чтобы даныие из техбокса сохранился в ексель зарание блогодарен

Автор: izekia 23.12.2007, 23:40
Lightwave, 
1. VSTO здесь не требуется, они для других задач. Вообще смутно понимаю смысл использования VSTO, даже в контексте своих задач. Жуткие тормоза.
2. PIA нужен для нормального удобочитаемого кода, а так инвокмембера еще никто не отменял.

по поводу примера кода:
Код

Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"))

Это без использования PIA

Автор: AET 4.1.2008, 07:59
Привет. 
Начал изучать работу с excel 
Из коллекции COM добавил ссылку на Microsoft Excel Object Library 
далее 
везде в примерах пишут 

using Excel = Microsoft.Office.Interop.Excel;

У меня только Microsoft.Office.Core 
Соответственно не могу создать объект приложения Excel 
Чтоже ещё нужно? 
Заранее спасибо.

Автор: mr.DUDA 4.1.2008, 14:12
AET, где-то косяк, проверь в solution explorer-е, добавился ли reference на Microsoft.Office.Interop.Excel. Только что проверил у себя, всё нормально добавляется и неймспейс нужный на месте.

Автор: AET 5.1.2008, 09:00
Цитата(mr.DUDA @ 4.1.2008,  14:12)
AET, где-то косяк, проверь в solution explorer-е, добавился ли reference на Microsoft.Office.Interop.Excel. Только что проверил у себя, всё нормально добавляется и неймспейс нужный на месте.

втомто и дело что Microsoft.Office.Interop.Excel нету там есть только Microsoft.Office.Core 
но есть один пример для экспартирование в Ексель там ано есть и работает а мне как его дабавить зарание блогодарен

Автор: mr.DUDA 5.1.2008, 13:27
AET, удали Microsoft.Office.Core кнопкой Delete и добавь "Microsoft Excel (тут номер) Object Library" снова, через Add Reference...

Автор: AET 5.1.2008, 19:45
Цитата(mr.DUDA @ 5.1.2008,  13:27)
AET, удали Microsoft.Office.Core кнопкой Delete и добавь "Microsoft Excel (тут номер) Object Library" снова, через Add Reference...

уменя Microsoft Excel 11,0 Object Library  всеравно выходит только Microsoft.Office.Core  что делать

Автор: mr.DUDA 6.1.2008, 03:31
Может есть другие COM-компоненты со словом Excel? 11-й это случайно не Office XP? И ещё, можно поискать в папке офиса файлы с расширением .TLB или .OLB и именем содержащим Excel или что-то типа того, и добавить reference на такой файл. Если при этом появится namespace Microsoft.Office.Interop.Excel - значит это то что нужно smile

З.Ы. У меня вот 2007-й офис установлен, там ничего дополнительно добавлять не нужно. В других версиях офиса может быть по-другому.

Автор: n0rb 14.3.2008, 16:58
У меня такая проблема: на моей машине стоит 2007й офис, а у заказчика 2003. Хотелось бы сделать, чтобы экспорт в Word и Excel работал всюду, но желательно без дергания методов через Reflection (наподобие Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"))), т.к. тормоза довольно большие + это очень неудобно при разработке =/

В COM-референсах есть только 12-й офис, т.е. 2007. Насколько знаю, если у клиента 2003, то это не пройдет.
Можно ли стянуть откуда-то отдельные файлы библиотек для Office11 и бросить их, например, в папку с проектом, потом добавить? Cмогу ли я разрабатывать и тестировать проект на машине с 2007-м и заработает ли моя программа с 2003, при таких манипуляциях?

Автор: Rififi 14.3.2008, 18:42
Цитата(a_r_e @  2.11.2007,  09:42 Найти цитируемый пост)
Подскажите плиз, как сделать экспорт данных из Form в Excel 

вливать данные в excel через ado.net
http://support.microsoft.com/kb/316934


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