4

I am trying to create an Excel file and write some data to it. Here is the code I am using.

using excel = Microsoft.Office.Interop.Excel;
excel.Application xlapp;
excel.Workbook xlworkbook;
excel.Worksheet xlworksheet;
object misvalue = System.Reflection.Missing.Value;

xlapp = new excel.ApplicationClass();
xlworkbook = xlapp.Workbooks.Add(misvalue);

xlworksheet = (excel.Worksheet)xlworkbook.Worksheets.get_Item(1);
xlworksheet.Cells[1, 1] = "Muneeb Hassan Soomro";
xlworkbook.SaveAs("csharp-excelwrite.xls",excel.XlFileFormat.xlWorkbookNormal,misvalue,misvalue,misvalue,misvalue,excel.XlSaveAsAccessMode.xlExclusive,misvalue,misvalue,misvalue,misvalue,misvalue);
//xlworkbook.SaveAs("csharp-Excel.xls", excel.XlFileFormat.xlWorkbookNormal);
xlworkbook.Close(true, misvalue, misvalue);
xlapp.Quit();

I get an exception on the xlworkbook.saveas() call. says:

The file name or path doesn't exist or used by other program

What i am doing wrong here?

Rezoan
  • 1,745
  • 22
  • 51
Muneeb Hassan
  • 125
  • 12

4 Answers4

2

So from one of your comments on another answer I finally got the exception text (This information should have been included in the question!)

The file name or path doesn't exist or used by other program

The solution should be simple: Specify a full path in the SaveAs call, not only a file name. How should Excel know in which folder it should save the file otherwise?

cremor
  • 6,669
  • 1
  • 29
  • 72
1

Try to change this line

xlworkbook = xlapp.Workbooks.Add(misvalue);

to this line:

xlworkbook = xlapp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

and the SaveAs:

workBook.SaveAs("csharp-excelwrite.xls", XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
dvjanm
  • 2,351
  • 1
  • 28
  • 42
  • still getting exception The file name or path doesn't exist or used by other program – Muneeb Hassan Jul 11 '13 at 07:29
  • Maybe your file is open by Excel, in task panel in the processes tab close all of the open tasks and change this line: xlworkbook.Close(true, misvalue, misvalue); to this: workBook.Close(true, "csharp-excelwrite.xls", null); – dvjanm Jul 11 '13 at 07:37
  • this solution is working - tested just now – sqladmin Jul 11 '13 at 07:38
0

So i suggest you to use excellibrary for Excel file writing

You can find a details on Create Excel (.XLS and .XLSX) file from C#

Community
  • 1
  • 1
Rezoan
  • 1,745
  • 22
  • 51
0

try this

object format = excel.XlFileFormat.xlWorkbookNormal;
object sv = excel.XlSaveAsAccessMode.xlExclusive;
object filename = "csharp-excelwrite.xls";

xlworkbook.SaveAs(ref filename,ref format,
ref misvalue,ref misvalue,ref misvalue,
ref misvalue,ref sv,ref misvalue,ref misvalue,
ref misvalue,ref misvalue,ref misvalue);

it is working for me with Word application for example

object readOnly = isReadonly;
object isVisible = true;
object missing = WordConst.Missing;
wordDoc = wordApp.Documents.Open(ref fileName, ref missing,
                          ref readOnly, ref missing, ref missing, ref missing,
                          ref missing, ref missing, ref missing, ref missing,
                          ref missing, ref isVisible, ref missing, ref missing, 
                          ref missing, ref missing);
sqladmin
  • 2,079
  • 2
  • 16
  • 11