Interop excel save file

Is there a way to save changes to an excel spreadsheet through the excel interop (in this case I am adding a worksheet to it) without having it prompt the user if they want to overwrite the existing file with the changes. I do not want the user to even see the spreadsheet open in my application so having a message box popping up asking them if they want to overwrite the file seems very out of place and possibly confusing to the user.

I am using the workbook.SaveAs(fileloaction) method.

Here is where I am initializing the COM reference objects for the excel interop.

private Excel.Application app = null;
    private Excel.Workbook workbook = null;

    public Excel.Workbook Workbook
    {
        get { return workbook; }
        set { workbook = value; }
    }
    private Excel.Worksheet worksheet = null;
    private Excel.Range workSheet_range = null;

Below is the code I am using to close/save the excel file. The workbook.close() method line is the one that is reportedly throwing the unhandled exception.

 workbook.Close(true, startForm.excelFileLocation, Missing.Value);
            Marshal.ReleaseComObject(app);
            app = null;
            System.GC.Collect();

asked Oct 24, 2012 at 18:24

user1546315's user avatar

user1546315user1546315

6735 gold badges16 silver badges27 bronze badges

Basically, all you need is ExcelApp.DisplayAlerts = False — Here’s how I do it, though:

ExcelApp.DisplayAlerts = False
ExcelWorkbook.Close(SaveChanges:=True, Filename:=CurDir & FileToSave)

Hope this helps

answered Oct 24, 2012 at 18:29

John Bustos's user avatar

John BustosJohn Bustos

18.9k16 gold badges87 silver badges148 bronze badges

5

Only this code will Require for stop override alert or Template already in use

ExcelApp.DisplayAlerts = False

answered Aug 29, 2013 at 5:57

Shivam Srivastava's user avatar

I know this is an old post, but I wanted to share a way to make this work without causing possible frustration in the future.

First what I do not like about using: ExcelApp.DisplayAlerts = False

Setting this flag will set this property on the excel file, not just in your program. This means that if a user makes changes to the file and closes it (by clicking the X), they will not be prompted to save the file and will cause frustration later. It will also disable any other prompts excel would typically post.

I like checking if the file exists before saving it:

        if (File.Exists(SaveAsName))
        {
            File.Delete(SaveAsName); 
        }

answered Nov 19, 2015 at 14:27

user5581710's user avatar

1

Ma_Russia, У меня вопрос. Какая версия Excel у вас установлена на компьютере?
Предлагаю следующие варианты Excel 97, 2000, 2003, 2007, 2010, 2013, 2016.

Если у вас установлена одна из версий 2007, 2010, 2013, 2016, то почему вы сохраняете с форматом XLS?
Аргумент XlFileFormat.xlWorkbookDefault говорит «необходимо сохранить файл с форматом «XLSX»

Вам нужно сперва определится какая версия Excel у вас стоит и с каким форматом вы хотите сохранить файл

Я сейчас переписал ваш код немного. Попробуйте его.

Напишите эту строку в самом верху

using Excel = Microsoft.Office.Interop.Excel;

почитайте комментарии в коде.
Если вам надо сохранить файл именно в формате Excel 2003, то раскомментируйте этот блок, а другой блок, который сохраняет в формате Excel 2007 наоборот закомментируйте.

и укажите свой путь к сохранению файла.

У меня установлен Excel 2013, соответственно я сохраняю файл в формат Excel 2007 (XLSX)

C#
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
            Excel.Application xlApp = new Excel.Application(); //Excel
            Excel.Workbook xlWB; //рабочая книга              
            Excel.Worksheet xlSht; //лист Excel   
 
            xlWB = xlApp.Workbooks.Add(); //создаём рабочую книгу Excel 
            xlSht = xlApp.ActiveSheet; //Лист1
 
            int colCount = dataGridView1.ColumnCount;
            int rowCount = dataGridView1.RowCount;
 
            for (int i = 0; i < rowCount; i++)
            {
                for (int j = 0; j < colCount; j++)
                {
                    xlSht.Cells[i + 1, j + 1] = dataGridView1.Rows[i].Cells[j].Value;
                }
            }
            xlApp.Visible = false; //не отображается сам файл
            xlApp.UserControl = true;
 
            string folder = @"G:"; //путь папке   
 
 
            // ЕСЛИ НУЖНО СОХРАНИТЬ ФАЙЛ В ФОРМАТЕ EXCEL 2003 (XLS) 
            //string filenameExcel2003 = "Мой Excel файл.xls"; //имя Excel файла, формат Excel 2003
            //string fullfilename2003 = System.IO.Path.Combine(folder, filenameExcel2003);
            //if (System.IO.File.Exists(fullfilename2003)) System.IO.File.Delete(fullfilename2003);
            //xlWB.SaveAs(fullfilename2003, Excel.XlFileFormat.xlExcel8); //формат Excel 2003
 
 
            // ЕСЛИ НУЖНО СОХРАНИТЬ ФАЙЛ В ФОРМАТЕ EXCEL 2007 (XLSX) 
            string filenameExcel2007 = "Мой Excel файл.xlsx"; //имя Excel файла, формат Excel 2007
            string fullfilename2007 = System.IO.Path.Combine(folder, filenameExcel2007);
            if (System.IO.File.Exists(fullfilename2007)) System.IO.File.Delete(fullfilename2007);
            xlWB.SaveAs(fullfilename2007, Excel.XlFileFormat.xlWorkbookDefault); //формат Excel 2007
 
            xlWB.Close(false); //false - закрыть рабочую книгу не сохраняя изменения
            xlApp.Quit(); //закрываем приложение Excel
            MessageBox.Show("Файл сохранён!", "Сохранение файла", MessageBoxButtons.OK, MessageBoxIcon.Information);

Не по теме: я не советую вам сохранять данные из DataGridView таким способом — бегая циклом по ячейкам листа Excel. Это очень медленный способ. Нужно сперва данные загружать в двумерный массив из DataGridView, а потом одной строкой выгружать их на лист в Excel

  • Remove From My Forums
  • Question

  • Hey,

    I’m manipulating an Excel (.xls) file trough C#, and I’m using this function the save the file in the end of my program:

    excelWS.SaveAs(@path, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);

    But after it the windows prompt asking to the user if he would like to overwrite the existing file (because i’m saving it with the same name as before).

    I’d like to know if there’s a way to always overwrite the file, without asking to the user.

    Regards

Answers

  •    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    
       excel.DisplayAlerts = false;
    
       excelSheePrint.SaveAs(filename, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, true, false, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing);
    
    
    If (My Answer) Please mark the replies as answer. Thanks; Else Thank you all the same; My Code Blog:http://nauhil.wordpress.com/

    • Proposed as answer by

      Friday, April 30, 2010 1:23 PM

    • Marked as answer by
      Henrique Nunes
      Friday, April 30, 2010 2:44 PM

  • As a work around

    you use File.Exist() to check whether is there any file avaible with the same name, then just delete it File.Delete

    that is the only way left. i’m adding sample code. {found here
    http://www.daniweb.com/forums/thread208167.html }

    • Marked as answer by
      Henrique Nunes
      Friday, April 30, 2010 2:44 PM

Оставляю заметку по работе с Excel с помощью C#.

Привожу фрагменты кода, которые искал когда-то сам для работы с Excel документами.

Наработки очень пригодились в работе для формирования отчетности.

Прежде всего нужно подключить библиотеку Microsoft.Office.Interop.Excel.

Подключение Microsoft.Office.Interop.Excel

Visual Studio здесь довольно старой версии. Если у вас версия новая, отличаться будет только вид окна.

Далее создаем псевдоним для работы с Excel:

using Excel = Microsoft.Office.Interop.Excel;

//Объявляем приложение
Excel.Application ex = new Microsoft.Office.Interop.Excel.Application();

//Отобразить Excel
ex.Visible = true;

//Количество листов в рабочей книге
ex.SheetsInNewWorkbook = 2;

//Добавить рабочую книгу
Excel.Workbook workBook = ex.Workbooks.Add(Type.Missing);

//Отключить отображение окон с сообщениями
ex.DisplayAlerts = false;                                       

//Получаем первый лист документа (счет начинается с 1)
Excel.Worksheet sheet = (Excel.Worksheet)ex.Worksheets.get_Item(1);

//Название листа (вкладки снизу)
sheet.Name = "Отчет за 13.12.2017";

//Пример заполнения ячеек
for (int i = 1; i <= 9; i++)
{
  for (int j = 1; j < 9; j++)
  sheet.Cells[i, j] = String.Format("Boom {0} {1}", i, j);
}

//Захватываем диапазон ячеек
Excel.Range range1 = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[9, 9]);

//Шрифт для диапазона
range1.Cells.Font.Name = "Tahoma";
//Размер шрифта для диапазона
range1.Cells.Font.Size = 10;

//Захватываем другой диапазон ячеек
Excel.Range range2 = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[9, 2]);
range2.Cells.Font.Name = "Times New Roman";

//Задаем цвет этого диапазона. Необходимо подключить System.Drawing
range2.Cells.Font.Color = ColorTranslator.ToOle(Color.Green);
//Фоновый цвет
range2.Interior.Color = ColorTranslator.ToOle(Color.FromArgb(0xFF, 0xFF, 0xCC));

Расстановка рамок.

Расставляем рамки со всех сторон:

range2.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous;
range2.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous;
range2.Borders.get_Item(Excel.XlBordersIndex.xlInsideHorizontal).LineStyle = Excel.XlLineStyle.xlContinuous;
range2.Borders.get_Item(Excel.XlBordersIndex.xlInsideVertical).LineStyle = Excel.XlLineStyle.xlContinuous;
range2.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous;

Цвет рамки можно установить так:

range2.Borders.Color = ColorTranslator.ToOle(Color.Red);

Выравнивания в диапазоне задаются так:

rangeDate.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
rangeDate.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

Формулы

Определим задачу: получить сумму диапазона ячеек A4:A10.

Для начала снова получим диапазон ячеек:

Excel.Range formulaRange = sheet.get_Range(sheet.Cells[4, 1], sheet.Cells[9, 1]);

Далее получим диапазон вида A4:A10 по адресу ячейки ( [4,1]; [9;1] ) описанному выше:

string adder = formulaRange.get_Address(1, 1, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);

Теперь в переменной adder у нас хранится строковое значение диапазона ( [4,1]; [9;1] ), то есть A4:A10.

Вычисляем формулу:

//Одна ячейка как диапазон
Excel.Range r = sheet.Cells[10, 1] as Excel.Range;
//Оформления
r.Font.Name = "Times New Roman";
r.Font.Bold = true;
r.Font.Color = ColorTranslator.ToOle(Color.Blue);
//Задаем формулу суммы
r.Formula = String.Format("=СУММ({0}", adder);

Выделение ячейки или диапазона ячеек

Так же можно выделить ячейку или диапазон, как если бы мы выделили их мышкой:

sheet.get_Range("J3", "J8").Activate();
//или
sheet.get_Range("J3", "J8").Select();
//Можно вписать одну и ту же ячейку, тогда будет выделена одна ячейка.
sheet.get_Range("J3", "J3").Activate();
sheet.get_Range("J3", "J3").Select();

Авто ширина и авто высота

Чтобы настроить авто ширину и высоту для диапазона, используем такие команды:

range.EntireColumn.AutoFit(); 
range.EntireRow.AutoFit();

Получаем значения из ячеек

Чтобы получить значение из ячейки, используем такой код:

//Получение одной ячейки как ранга
Excel.Range forYach = sheet.Cells[ob + 1, 1] as Excel.Range;
//Получаем значение из ячейки и преобразуем в строку
string yach = forYach.Value2.ToString();

Добавляем лист в рабочую книгу

Чтобы добавить лист и дать ему заголовок, используем следующее:

var sh = workBook.Sheets;
Excel.Worksheet sheetPivot = (Excel.Worksheet)sh.Add(Type.Missing, sh[1], Type.Missing, Type.Missing);
sheetPivot.Name = "Сводная таблица";

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

//Ячейка, с которой будет разрыв
Excel.Range razr = sheet.Cells[n, m] as Excel.Range;
//Добавить горизонтальный разрыв (sheet - текущий лист)
sheet.HPageBreaks.Add(razr); 
//VPageBreaks - Добавить вертикальный разрыв

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

ex.Application.ActiveWorkbook.SaveAs("doc.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

ex.Workbooks.Open(@"C:UsersMyuserDocumentsExcel.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 с помощью C# большую помощь может оказать редактор Visual Basic, встроенный в Excel.

Для этого в настройках ленты надо добавить пункт «Разработчик». Далее начинаем запись макроса, производим действия и останавливаем запись.

Далее заходим в редактор Visual Basic и смотрим код, который туда записался:

Vusial Basic (VBA)

Например:

Sub Макрос1()
'
' Макрос1 Макрос
'

'
    Range("E88").Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$F$118"), , xlYes).Name = _
        "Таблица1"
    Range("A1:F118").Select
    ActiveSheet.ListObjects("Таблица1").TableStyle = "TableStyleLight9"
    Range("E18").Select
    ActiveWindow.SmallScroll Down:=84
End Sub

В данном макросе записаны все действия, которые мы выполнили во время его записи. Эти методы и свойства можно использовать в C# коде.

Данный метод так же может оказать помощь в формировании относительных формул, например, выполнить сложение чисел, находящиеся слева от текущей ячейки на 4 столбца, и т.п. Пример:

//Складываем значения предыдущих 12 ячеек слева
rang.Formula = "=СУММ(RC[-12]:RC[-1])";

Так же во время работы может возникнуть ошибка: метод завершен неверно. Это может означать, что не выбран лист, с которым идет работа.

Чтобы выбрать лист, выполните sheetData.Select(Type.Missing); где sheetData это нужный лист.


Просмотрено:
81 944

This article will demonstrate some basic skills of controlling Excel by using C#, including Create, Open, Save Excel files, Add/Delete

Sheet, Add/Delete/Hide rows and columns, format cells and Export data to Excel. I hope this resource is

useful for some of you.

Import Namespace

using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;
using System.IO;
using System.Reflection;

1. How to Open an Excel File, or Create a New Excel File

Application app = new Application();
Workbooks objWBs = app.Workbooks;
_Workbook _objWB = objWBs.Add(xxx);

Open an existing Excel file, please replace “xxx” with the excel file path.

Create a new Excel file, please replace “xxx” with “true”.

Note: There is only one worksheet in the Excel file.

2. Get, Delete and Add Sheet

Sheets shs = _objWB.Sheets;

2.1 Get

//i is index of the sheet which you want get: _Worksheet _objWS = (_Worksheet)shs.get_Item(i)

2.2 Delete

//must do when delete app.DisplayAlerts = false;
_objWS.Delete();

2.3 Add

a(before),b(after):after which sheet; c:NumberOfSheets to add;d:type (normal, hidden or charttype)
app.Worksheets.Add(a,b,c,d);

2.4 Rename Sheet

_objWS.Name = "xxx";

3. Delete Rows and Columns

3.1 Delete Rows

((Range)_objWS.Rows[3, Missing.Value]).Delete(XlDeleteShiftDirection.xlShiftUp);

3.2 Delete Columns

_objWS.get_Range(
_objWS.Cells[1, 2],
_objWS.Cells[_objWS.Rows.Count, 2]).Delete(XlDeleteShiftDirection.xlShiftToLeft
);

4. Add Rows and Columns

4.1 Add Rows

((Range)_objWS.Rows[11, Missing.Value])
.Insert(Missing.Value, XlInsertFormatOrigin.xlFormatFromLeftOrAbove);

4.2 Add Columns

_objWS.get_Range(
_objWS.Cells[1, 1], _objWS.Cells[_objWS.Rows.Count, 1])
.Insert(Missing.Value, XlInsertShiftDirection.xlShiftToRight);

5. Format Cells

5.1 Get Cell

//Get cell object _objWS.Cells[row, cell]

5.2 Set Formula

//input formula in the cell _objWS.Cells[row, cell] = "=Sum(A1/B1)";

5.3 Merge Cells

((Range)_objWS.Rows[1, Missing.Value]).Merge(Missing.Value);

5.4 Set Row Height and Column Width

((Range)_objWS.Rows[3, Missing.Value]).RowHeight = 5;
((Range)_objWS.Rows[3, Missing.Value]).ColumnWidth = 5;

5.5 Set Cell Color (56 Choices) Color Table Attached

((Range)_objWS.Rows[1, Missing.Value]).Interior.ColorIndex = 3;

5.6 Set Font Size

((Range)_objWS.Cells[1, "B"]).Font.Size = 8;

5.7 Set Font Bold

((Range)_objWS.Rows[1, Missing.Value]).Font.Bold = false;

5.8 Set Cell or Field Horizontal and Center

((Range)_objWS.Cells[2, 1]).HorizontalAlignment = XlVAlign.xlVAlignCenter;

5.9 Set Field Borders

((Range)_objWS.Cells[3, 3]).Borders.LineStyle = 3;

5.10 Set Border Lines (Upside, Downside, Left Side and Right Side)

//Left side border line _objWS.get_Range(
_objWS.Cells[2, 1], _objWS.Cells[2, 2])
.Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//	 
//Right side border line _objWS.get_Range(
_objWS.Cells[2, 1], _objWS.Cells[2, 2])
.Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//	 
//Upside border line _objWS.get_Range(
_objWS.Cells[2, 1], _objWS.Cells[2, 2])
.Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//? 	 
//Downside border line _objWS.get_Range(
_objWS.Cells[2, 1], _objWS.Cells[2, 2])
.Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;

6. Copy Selected Field

_Worksheet _objWS = (_Worksheet)shs.get_Item(1);// Copy selected field content 	 
Range range = _objWS.get_Range(_objWS.Cells[7, 1], _objWS.Cells[10, 

_objWS.Columns.Count]);

range.Select();
range.Copy(Type.Missing);

//Select paste starting position Range test = ((Range)_objWS.Cells[11, 1]);
test.Select();

// Shield Alert, default confirm paste app.DisplayAlerts = false;
test.Parse(Missing.Value, Missing.Value);

Note: Type Missing and Missing Value are considered as some parameters’ default value. Most of time, they are form complemented parameters.

8. Save Excel and Follow-up Processes

8.1 Save Excel File

// Shield Alert popped up from system app.AlertBeforeOverwriting = false;

// Save to selected file path SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, 
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

Note: It’s the only solution for saving the Excel file. Otherwise, there will generate a corresponding copy in “My File”.

8.2 Follow-up Processes: Exit and Release

//_objWB.Close(null, null, null); //objWBs.Close(); app.Quit();

// Release unnecessary excel processes System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
app = null;

Note: During the process of closing application, we usually have 2 solutions:

  • Directly exit app
  • Close workbook, close workbooks, exit app. (Recommended)

9. Set Cell Field and Get the Necessary Data from Field

9.1 If cell has been set as drop-down box

// Here the “1, 2, 3” means the drop-down box value  ((Range)_objWS.Cells[2, 1])
.Validation.Modify(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, 
	Type.Missing, "1,2,3", Type.Missing);

9.2 If cell has not been set as drop-down box

((Range)_objWS.Cells[2, 1])
.Validation.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, 
	Type.Missing,"1,2,3", Type.Missing);

9.3 Get drop-down box field value

string strValue = ((Range)_objWS.Cells[2, 1]).Validation.Formula1;

Note: In the excel template, if set drop-down box value through effectiveness, strValue will get the formula of excel, which need be converted.

After get strValue, you can get the numerical value according to index.

10. Hide Rows and Hide Columns

10.1 Hide Rows

_objWS.get_Range(_objWS.Cells[19, 1], _objWS.Cells[22, 

1]).EntireRow.Hidden = true;

10.2 Hide Columns

_objWS.get_Range(_objWS.Cells[1, 1], _objWS.Cells[_objWS.Rows.Count, 1])
.EntireColumn.Hidden = true;

11. Convert Excel to PDF (Excel 2007 onwards)

For security reasons, sometimes we need convert Excel to PDF format. However, we can also use C# to do this job. By easily using “Document.ExportAsFixedFormat”

method, we can convert this Excel worksheet to PDF format. Do as the following codes:

objWB.ExportAsFixedFormat(paramExportFormat, pdfPath, paramExportQuality, paramIncludeDocProps, paramIgnorePrintAreas, paramFromPage,  paramToPage, 

paramOpenAfterPublish,mis);

See more:

Dear all,
I am working on windows application. In this application i am working office 2007. i can open .xlsx file using following code.

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();

excelApp.Visible = true;

Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(varFileName,0, false, 5, """, """, false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, """,
                true, false, 0, true, false, false);
                Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkbook.ActiveSheet;

workSheet.Activate();

After that I will do some modification on same xlsx file.

Now problem start with, when I want to save the file.
I am doing this using following code.

excelApp.ActiveWorkbook.Save();
excelApp.ActiveWorkbook.Close((Object)false, (Object)oMissing, (Object)oMissing);
excelApp.Quit();

It shows exception as Object reference not set to an instance of an object. It will not show any active document. It shows ActiveWorkbook=null;
Any kind of link, suggestion and specially expert advice would be highly appreciated.

Thanks & Regards,
Balkrishna Raut

  1. HowTo
  2. C# Howtos
  3. Write to an Excel File in C#

Muhammad Maisam Abbas
Jun 08, 2021
Mar 26, 2021

Write to an Excel File in C#

This tutorial will discuss the method to write data to an Excel file in C#.

Write Data to an Excel File With the Microsoft.Office.Interop.Excel Namespace in C#

The Microsoft.Office.Interop.Excel namespace provides methods for interacting with the Microsoft Excel application in C#. We can create new Excel sheets, display data of existing sheets, modify the existing Excel sheets’ contents, etc., with this namespace. The following code example shows us how to write our data to an Excel file with the Microsoft.Office.Interop.Excel namespace in C#. We need to add a reference to the Microsoft.Office.Interop.Excel namespace from the solution explorer for this approach to work.

using System;
using Excel = Microsoft.Office.Interop.Excel;
namespace write_to_excel
{
    class Program
    {
        static void writeToExcel()
        {
            
            Excel.Application myexcelApplication = new Excel.Application();
            if (myexcelApplication != null)
            {
                Excel.Workbook myexcelWorkbook = myexcelApplication.Workbooks.Add();
                Excel.Worksheet myexcelWorksheet = (Excel.Worksheet)myexcelWorkbook.Sheets.Add();

                myexcelWorksheet.Cells[1, 1] = "Value 1";
                myexcelWorksheet.Cells[2, 1] = "Value 2";
                myexcelWorksheet.Cells[3, 1] = "Value 3";

                myexcelApplication.ActiveWorkbook.SaveAs(@"C:abc.xls", Excel.XlFileFormat.xlWorkbookNormal);

                myexcelWorkbook.Close();
                myexcelApplication.Quit();
            }
        }
        static void Main(string[] args)
        {
            writeToExcel();
        }
    }
}

In the above code, we first initialized an instance of the Excel.Application class myExcelApplication. We then initialized the instance myExcelWorkbook of the Excel.Workbook class and added a workbook to our myExcelApplication with the myExcelApplication.Workbooks.Add() function. After that, we initialized the instance myExcelWorksheet of the Excel.Worksheet class and added an excel worksheet to our workbook with the myExcelWorkbook.Sheets.Add() function.

We then inserted data into the cells inside the myExcelWroksheet with the myExcelWorksheet.Cells[1, 1] = "Value 1". Here, the first index, 1, is the row index, and the second index, 1, is the column index. The Excel file was saved by the myExcelApplication.ActiveWorkbook.SaveAs(path, format) function. In the end, after inserting all the data inside the cells and saving our Excel file, we closed our workbook with myExcelWorkbook.Close() and exited our application with myExcelApp.Quit() functions in C#.

Muhammad Maisam Abbas avatar
Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Related Article — Csharp Excel

  • Export DataTable to Excel in C#
  • Export Data to an Excel File Using C#
  • Create Excel File in C#
  • Read XLSX File in C#

Ezoic

Like this post? Please share to your friends:
  • Internet word of mouth
  • Internet word derived from
  • Internet fill in the gaps with the correct word the
  • Internet explorer редактировать с помощью word
  • Internet explorer one word