Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Кто знает Visual C++.NET помогите


Автор: Guest_Костя 18.4.2003, 21:46
Кто знает Visual C++.NET помогите пожалуста а то у меня проблема.
Если знаете то подскажите как в VC++.net работатьс EXEL,м.
А то например есть такая прога которая должна обнавлять прайс лист по 40 раз в день. А я даже не могу считыватьс Exel,я .Подскажите как работать с Exel,м.

Автор: AntonSaburov 21.4.2003, 11:42
1. Создаем новый проект в .NET.
2. В Solution Explorer (Ctrl+Alt+L) на пункте Reference щелкаем правой кнопкой мыши и выбираем "Add Reference..."
3. В диалоговом окошке "Add Reference" выбираем закладку COM и там находим Microsoft Excel.
4. Делаем Select.
5. Нажимаем OK

Теперь можно работать.
Для примера просто поднимем Excel

Код

private void button3_Click(object sender, System.EventArgs e)
{
   Excel.Application ap = new Excel.Application();
   ap.Visible = true;
}


Если глянуть в каталог bin, то можно увидеть, что созданы дополнительные dll, которые по сути являются .NET обертками вокруг нужных COM-объектов. Обычно они имеют префикс Interop.*. Например для Excel будет Interop.Excel.dll.

Для более продвинутых программистов, которые могут определить какой файл необходимо обработать можно использовать утилиту tlbimp.
Ее описание можно найти в документации.

Автор: Step 21.4.2003, 13:04
а помом создаеш новую книгу и начинаеш с ячеками играться, только помоему у ячеек относительная адрессация с последней используемой

Автор: amonra 28.5.2003, 16:04
У меня как то была подобная задача так я обращался к EXEL как к БД через ADO.NET только там свой провайдер. (Может поможет)

Автор: Biginr 14.10.2005, 11:36
А как открыть уже существующий фаил(Excel) для его изменения

Автор: mr.DUDA 14.10.2005, 19:12
Вот примеры:
Код

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

namespace ConsoleApplication2
{
    class TestClass
    {
        [STAThread]
        static void Main(string[] args)
        {
            // ПРИМЕР 1: как создать документ Excel

            // это значение используется для опциональных параметров
            object optional = Missing.Value;

            // создаём приложение-сервер Excel
            Excel.Application app = new Excel.Application();

            // создаём "книгу" и одну закладку
            Excel.Workbook workbook = app.Workbooks.Add(optional);
            Excel.Worksheet worksheet = (Excel.Worksheet) workbook.Sheets.Add(optional, optional, optional, optional);

            // редактируем ячейки A1...A4
            worksheet.Cells[1, 1] = "1";
            worksheet.Cells[2, 1] = "10";
            worksheet.Cells[3, 1] = "108";
            worksheet.Cells[4, 1] = "=СУММ(A1;A3)";
            
            // сохраняем книгу
            workbook.SaveAs(@"c:\1.xls", optional, optional, optional, optional,
                optional, Excel.XlSaveAsAccessMode.xlShared, optional, optional, 
                optional, optional, optional);


            // ПРИМЕР 2: как открыть документ и получить данные
            Excel.Workbook workbook2 = app.Workbooks.Open(@"c:\1.xls", optional, optional, optional,
                optional, optional, optional, optional, optional, optional, optional,
                optional, optional, optional, optional);
            Excel.Worksheet worksheet2 = (Excel.Worksheet)workbook2.Worksheets[1];

            // получаем значения из ячеек A1 и A4
            Excel.Range rangeA1 = (Excel.Range)worksheet2.Cells[1, 1];
            double valueA1 = (double)rangeA1.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);
            Excel.Range rangeA4 = (Excel.Range)worksheet2.Cells[4, 1];
            double valueA4 = (double)rangeA4.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);

            // в конце ОБЯЗАТЕЛЬНО выгружаем Excel
            app.Quit();
        }
    }
}


Автор: mr.DUDA 14.10.2005, 19:24
P.S. код написан в C# smile
Цитата(Guest_ @ 18.4.2003, 21:46)
как в VC++.net работатьс EXEL,м.

Автор: Biginr 14.10.2005, 22:48
Большое спасибо

Автор: Biginr 16.10.2005, 12:42
А как сделать тоже самое в Word

Автор: mr.DUDA 16.10.2005, 15:40
По аналогии. Там всё должно быть понятно. Единственно нужно владеть понятиями "Document", "Selection", "Range" - обо всём можно почитать в справке по MS Word smile : Alt+F11, потом жмём F1, и ищем нужный раздел при условии что установлена справка по VBA. Либо MSDN.

Автор: Biginr 16.10.2005, 20:33
Подскажите что надо писать в скобках метода Open


Wo
Код

rd.Document doc=wApp.Documents.Open(//не знаю)

Автор: mr.DUDA 16.10.2005, 22:51
Вот пример:
Код
using System;
using System.Reflection;
using Microsoft.Office;

namespace ConsoleApplication1
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            object optional = Missing.Value;

            // загружаем DOC-файл
            Word.ApplicationClass app = new Word.ApplicationClass();
            object fileName = @"c:\123.doc";
            Word.Document doc = app.Documents.Open(ref fileName, ref optional, ref optional,
                ref optional, ref optional, ref optional, ref optional,
                ref optional, ref optional, ref optional, ref optional,
                ref optional, ref optional, ref optional, ref optional,
                ref optional);

            // получаем строковое содержимое файла
            doc.Select();
            string text = app.Selection.Text;

            // заменяем содержимое файла на "123456"
            app.Selection.TypeText("123456");

            // сохраняем документ
            doc.Save();

            // выгружаем Word
            app.Quit(ref optional, ref optional, ref optional);
        }
    }
}

Автор: Biginr 16.10.2005, 23:19
Спасибо smile

Автор: Biginr 18.10.2005, 22:21
Цитата
"Подскажите как задать координаты для ввода текста в AUTOCAD."

Разве здесь два вопроса?

Автор: mr.DUDA 20.10.2005, 22:27
Цитата(Biginr @ 18.10.2005, 22:21)
Разве здесь два вопроса?

Уже три вопроса ! smile
Первый был про Word, второй - про Excel, а третий - по automation приложения AutoCAD. Я понимаю, что тема сходная, но тем не менее:

Модератор: Пожалуйста, один топик - один вопрос.

Просьба в последующем соблюдать правила форума.

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