Xls as new excel application

  • Remove From My Forums
  • Question

  • Hi guys,

    I’m using VB Express 2008 and I would like to open an excel file and save it with different name file.

    For example,  I would like to open a file in C:test.xls and then I want to
    save them with different file name such as C:try.xls

    What’s the code for doing that?

    I know this is a stupid question…..but I’m a newbie

    Thanks

Answers

  • Hi eefendy, here is the basics of how to open and save an Excel file. You need to first ensure that you import the name space. Also make a reference to Microsoft Excel 12.0 or
    11.0 (whatever version your computer has) object library.

    Imports.Microsoft.Office.Interop

    Next you will need to declare your variables

    Private xls As New Excel.Application

     Private xlwb As Excel.Workbook

    Then you will use this code to open and save your file with a new file name.

    xlwb = xls.Workbooks.Open(WorkbookPath)

     xlwb.SaveAs(FilePath)
    I hope this works for you, let me know.


    Jeremy Western MCPD Windows – OmniDevSolutions jwestern at omnidevsolutions dot com Please make sure to mark answers as helpful when used and answered when completed.

    • Proposed as answer by

      Monday, April 19, 2010 5:08 PM

    • Marked as answer by
      Martin_Xie
      Monday, April 26, 2010 4:58 AM

    • Marked as answer by
      eefendy
      Sunday, May 2, 2010 4:01 AM

0 / 0 / 0

Регистрация: 16.08.2007

Сообщений: 145

1

17.09.2007, 21:32. Показов 4682. Ответов 6


Студворк — интернет-сервис помощи студентам

При коде
dim xlapp as excel.application
set xlapp = new excel.application
выдает сообщение об ошибке(тип не определен)
какой файл(ы) нужны???
стоит office2000 — посоветуйте
Заранее thanx



0



0 / 0 / 0

Регистрация: 28.08.2007

Сообщений: 171

18.09.2007, 09:04

2

Привет. Тут надо малость не так.
Для начала идешь в меню Project, References, там ставишь галочку на пункте Microsoft Excel 9.0 Object Library.
Далее: в коде (там где надо, но лучше в разделе General) пишешь:
Public MyXL As New Excel.Application
‘открываем рабочую книгу
MyXL.Workbooks.Open (‘File Name’)
‘Ссылаюсь на содержание ячейки А1
Txt.Text = MyXL.Worksheets(‘Лист1’).Cells(1, 3).Value

Ну и так далее извращайся как можешь.
Удачи!!!



0



0 / 0 / 1

Регистрация: 28.07.2007

Сообщений: 177

18.09.2007, 11:54

3

Alexey,
Всё правильно, только лучше не использовать
Public MyXL As New Excel.Application
особенно с офисовскими объектами — очень не эффективно. Вместо этого
Public MyXL As Excel.Application
Set MyXL = New Excel.Application



0



0 / 0 / 0

Регистрация: 16.08.2007

Сообщений: 145

18.09.2007, 12:54

 [ТС]

4

Всем большое спасибо за ответы, но в том то и дело , что не хватает какой-то библиотеки — word.application создается, а excel.application — нет ((( Если кто знает название файла этой библиотеки или он есть в наличии — скиньте
Заранее пасибо
yax_param@mail.ru



0



0 / 0 / 0

Регистрация: 16.08.2007

Сообщений: 145

18.09.2007, 13:20

 [ТС]

5

Файл excel9.olb — вроде то что надо, но почему-то не регистрируется (( срочно нужна библиотека типов EXCEL



0



0 / 0 / 0

Регистрация: 28.08.2007

Сообщений: 171

18.09.2007, 15:02

6

Леон!!!
Что то я не улавливаю в чем тут разница,
что ты пишешь
Public MyXL As New Excel.Application
что ты пишешь
Public MyXL As Excel.Application
Set MyXL = New Excel.Application
насколько я понимаю результат один и тот же (объясни темноте).

А тебе дорогой Ant можно посоветовать поставить заново VB-6 SP-5 и снести Office2000 и проинсталить заново. Мож че и получиться.



0



0 / 0 / 1

Регистрация: 28.07.2007

Сообщений: 177

18.09.2007, 16:00

7

Alexey Привет!
При использовании твоего метода объект не создаётся в момент выполнения
Public MyXL As New Excel.Application
реальное создание объекта происходит только при первом к нему обращении. Проблема в том, что компилятор не знает, какое обращение первое, поэтому перед каждым использованием объекта при компиляции добавляется код для проверки и создания объекта при необходимости. Естественно большая часть этого кода совершенно лишняя, так как ты точно знаеш, когда нужно создать объект. Особенно серьёзные потери при использовании сложной иерархии объектов, как в случае с Офисом.

Что касается переустановки Office2000 — совершенно согласен.



0



Все привет, в этой статье опишу исчерпывающие примеры работы с excel на языке C#.

Для начала работы нам необходимо подключить библиотеку COM как на рисунке ниже:

Для этого добавляем ссылку в проект, надеюсь вы знаете как это делается) Выбираем пункт COM ищем библиотеку Microsoft Excel 16.0 Object Library ставим галочку и жмем Ок.

Далее нам не обходимо для сокращения записи и удобства создать алиас.

using Excel = Microsoft.Office.Interop.Excel;

Теперь нам нужно объявить объект Excel задать параметры и приступать к работе.

//Объявляем приложение

            Excel.Application app = new Excel.Application

            {

                //Отобразить Excel

                Visible = true,

                //Количество листов в рабочей книге

                SheetsInNewWorkbook = 2

            };

            //Добавить рабочую книгу

            Excel.Workbook workBook = app.Workbooks.Add(Type.Missing);

            //Отключить отображение окон с сообщениями

            app.DisplayAlerts = false;

            //Получаем первый лист документа (счет начинается с 1)

            Excel.Worksheet sheet = (Excel.Worksheet)app.Worksheets.get_Item(1);

            //Название листа (вкладки снизу)

            sheet.Name = «Имя должно быть не больше 32сим»;

Пример заполнения ячейки:

           //Пример заполнения ячеек №1

            for (int i = 1; i <= 9; i++)

            {

                for (int j = 1; j < 9; j++)

                    sheet.Cells[i, j] = String.Format(«nookery {0} {1}», i, j);

            }

            //Пример №2

            sheet.Range[«A1»].Value = «Пример №2»;

            //Пример №3

            sheet.get_Range(«A2»).Value2 = «Пример №3»;

Захват диапазона ячеек:

            //Захватываем диапазон ячеек Вариант №1

            Excel.Range r1 = sheet.Cells[1, 1];

            Excel.Range r2 = sheet.Cells[9, 9];

            Excel.Range range1 = sheet.get_Range(r1, r2);

            //Захватываем диапазон ячеек Вариант №2

            Excel.Range range2 = sheet.get_Range(«A1»,«H9» );

Оформление, шрифт, размер, цвет, толщина.

            //Шрифт для диапазона

              range.Cells.Font.Name = «Tahoma»;

              range2.Cells.Font.Name = «Times New Roman»;

            //Размер шрифта для диапазона

              range.Cells.Font.Size = 10;

            //Жирный текст

              range.Font.Bold = true;

            //Цвет текста

              range.Font.Color = ColorTranslator.ToOle(Color.Blue);

Объединение ячеек в одну

  //Объединение ячеек с F2 по K2

    Excel.Range range3 = sheet.get_Range(«F2», «K2»);

    range3.Merge(Type.Missing);

Изменяем размеры ячеек по ширине и высоте

//увеличиваем размер по ширине диапазон ячеек

   Excel.Range range2 = sheet.get_Range(«D1», «S1»);

   range2.EntireColumn.ColumnWidth = 10;

//увеличиваем размер по высоте диапазон ячеек

   Excel.Range rowHeight = sheet.get_Range(«A4», «S4»);

   rowHeight.EntireRow.RowHeight = 50;range.EntireColumn.AutoFit();range.EntireColumn.AutoFit(); //авторазмер

Создаем обводку диапазона ячеек

Excel.Range r1 = sheet.Cells[countRow, 2];

Excel.Range r2 = sheet.Cells[countRow, 19];

Excel.Range rangeColor = sheet.get_Range(r1, r2);

rangeColor.Borders.Color = ColorTranslator.ToOle(Color.Black);

Производим выравнивания содержимого диапазона ячеек.

  Excel.Range r = sheet.get_Range(«A1», «S40»);

  //Оформления

  r.Font.Name = «Calibri»;

  r.Cells.Font.Size = 10;

  r.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;

  r.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

Примеры вычисления формул, все вставки формул были скопированы из самой Excel без изменений. Позиция ячейки взята из счетчика переменно и подставлен к букве ячейки

sheet.Cells[countRow, countColumn] = $«=G{countRow}-F{countRow}»;

sheet.Cells[countRow, countColumn].FormulaLocal = $«=ЕСЛИ((H{countRow}*O{countRow})+(I{countRow}*P{countRow})/100<=0;J{countRow}*O{countRow}/100;((H{countRow}*O{countRow})+(I{countRow}*P{countRow}))/100)»;

sheet.Cells[countRow, countColumn] = $«=K{countRow}+N{countRow}-R{countRow}»;

sheet.Cells[33, 22].FormulaLocal = «=СУММ(V3:V32)»;

Добавляем разрыв страницы.

//Ячейка, с которой будет разрыв

Excel.Range razr = sheet.Cells&#91;n, m] as Excel.Range;

//Добавить горизонтальный разрыв (sheet — текущий лист)

sheet.HPageBreaks.Add(razr);

//VPageBreaks — Добавить вертикальный разрыв

Как открыть фаил Excel

app.Workbooks.Open(@»C:UsersUserDocumentsExcel.xlsx»,

  Type.Missing, Type.Missing, Type.Missing, Type.Missing,

  Type.Missing, Type.Missing, Type.Missing, Type.Missing,

  Type.Missing, Type.Missing, Type.Missing, Type.Missing,

  Type.Missing, Type.Missing);

Сохраняем документ Excel

app.Application.ActiveWorkbook.SaveAs(«MyFile.xlsx», Type.Missing,

  Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,

  Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

Завершение работы с объектом Excel.Application

app.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

Пример как выбрать фаил и загрузив его и узнать количество заполненных строк и колонок в одном конкретном листе по имени.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

//поиск файла Excel

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Multiselect =false;

            ofd.DefaultExt = «*.xls;*.xlsx»;

            ofd.Filter = «Microsoft Excel (*.xls*)|*.xls*»;

            ofd.Title = «Выберите документ Excel»;

            if (ofd.ShowDialog() != DialogResult.OK)

            {

                MessageBox.Show(«Вы не выбрали файл для открытия», «Внимание», MessageBoxButtons.OK, MessageBoxIcon.Information);

                return;

            }

            string xlFileName = ofd.FileName; //имя нашего Excel файла

            //рабоата с Excel

            Excel.Range Rng;            

            Excel.Workbook xlWB;

            Excel.Worksheet xlSht;

            int iLastRow, iLastCol;

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

            xlWB = xlApp.Workbooks.Open(xlFileName); //открываем наш файл          

            xlSht = xlWB.Worksheets[«Лист1»]; //или так xlSht = xlWB.ActiveSheet //активный лист

            iLastRow = xlSht.Cells[xlSht.Rows.Count, «A»].End[Excel.XlDirection.xlUp].Row; //последняя заполненная строка в столбце А

            iLastCol = xlSht.Cells[1, xlSht.Columns.Count].End[Excel.XlDirection.xlToLeft].Column; //последний заполненный столбец в 1-й строке

Получаем список всех загруженных книг «листов» из файла

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

  //поиск файла Excel

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Multiselect = false;

            ofd.DefaultExt = «*.xls;*.xlsx»;

            ofd.Filter = «Microsoft Excel (*.xls*)|*.xls*»;

            ofd.Title = «Выберите документ Excel»;

            if (ofd.ShowDialog() != DialogResult.OK)

            {

                MessageBox.Show(«Вы не выбрали файл для открытия», «Внимание», MessageBoxButtons.OK, MessageBoxIcon.Information);

                return;

            }

            string xlFileName = ofd.FileName; //имя нашего Excel файла

Excel.Workbook xlWB = ex.Workbooks.Open(xlFileName);

///загружаем список всех книг

            foreach (object item in xlWB.Sheets)

            {

                Excel.Worksheet sheet = (Excel.Worksheet)item;

            }

Давайте научимся быстро и просто создавать и записывать файлы Excel с помощью visual studio c#. Наше самое простое приложение Windows Forms будет брать из текстбокса текст и заносить его в первую ячейку. Статья написана специально для Сергея =).

Начать необходимо с подключения библиотеки Microsoft.Office.Interop.Excel. Выглядеть это должно так:

Если у вас при открытии обозревателя решений – Ссылки – правая кнопка – Добавить ссылку – Сборки – в списке нет Microsoft.Office.Interop.Excel, то добавьте её через Nuget. Проект – управление пакетами NuGet – в строке поиска Excel:

Теперь создайте новый проект Windows Forms и на форму закиньте текстбокс и кнопку. На кнопки кликните два раза, откроется исходный код. В самом верху допишите следующее:

using Excel = Microsoft.Office.Interop.Excel;

А в методе button1_Click замените так:

private void button1_Click(object sender, EventArgs e)
        {
            string fileName = "D:\temp\test.xls";

            try
            {
                var excel = new Excel.Application();

                var workBooks = excel.Workbooks;
                var workBook = workBooks.Add();
                var workSheet = (Excel.Worksheet)excel.ActiveSheet;

                workSheet.Cells[1, "A"] = textBox1.Text;

                workBook.SaveAs(fileName);
                workBook.Close();
            }
            catch (Exception ex) {
                MessageBox.Show("Ошибка: "+ ex.ToString());
            }

            MessageBox.Show("Файл "+ Path.GetFileName (fileName) + " записан успешно!");

        }

Вот, собственно говоря и все. Текст из текстбокса запишется в ячейку A1. Обратите внимание, что папка temp на диске уже должна существовать.

Дополнение. Прочитать первую ячейку

Это тоже просто:

 string fileName = "D:\temp\test.xls";

Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(fileName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "t", false, false, 0, true, 1, 0);
Excel._Worksheet xlWorksheet = (Excel._Worksheet)xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;

string temp = (string)(xlRange.Cells[1, 1] as Excel.Range).Value2;// 1 1 - адрес 1-й ячейки
MessageBox.Show(temp);


Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, си шарп, excel

I am going to write a long script that will perform actions on at
least 5 Workbooks

Good question, short answer is that you can open 5 workbooks in one Application object.

If you’re in excel (else see below) then you already have an Excel.Application. You can then set each workbook to a different object or reference them by name:

dim wb1, wb2 as Excel.Workbook, wb3 as New Excel.Workbook 'blank is
same as Variant set wb1 = application.open("path/wb.xlsx") msgbox
wb1.name                  'ref by object msgbox
workbooks("wb.xlsx").name 'ref by name

My understanding is that if I need to perform actions on an excel
document and the application is closed then I should use New
Excel.Application

If you’re outside Excel (like in Access) then you may want to create an Excel.Application object, here are some tips:

Dim nXlApp as New Excel.Application

has the same effect as:

Dim xlApp as Excel.Application
Set xlApp = New Excel.Application             'Early Binding
Set xlApp = CreateObject(“Excel.Application”) 'Late Binding

Do not define (dim) inside a loop, however you can instantiate (Set) the same object as many times as you want. If you’re using a global object (which is not recommended but sometimes handy) inside a control (button, etc) you may use something like this:

if xlApp is Nothing then set xlApp = CreateObject(“Excel.Application”)

When you’re done don’t forget to clean house!

wb1.Close False
set wb1 = Nothing 'do this once for each defined object, anything using New/Set

See also,

  • Difference between CreateObject(«Excel.Application») .Workbooks.Open and just Workbooks.Open
  • https://support.microsoft.com/en-us/kb/288902 (GetObject and CreateObject behavior)

Понравилась статья? Поделить с друзьями:
  • Xlrderror excel xlsx file not supported
  • Xlookup это на русском excel
  • Xlookup нет в excel
  • Xlnone excel что это
  • Xllex dll испорчен или отсутствует в excel 2019