Solved

Create New XLS with C#

Posted on 2008-06-12
2
5,970 Views
Last Modified: 2013-12-17
Hello Experts,

I have what I think is a pretty basic question -- I have modified the attached snippet to fill a spreadsheet from a dataview (via an array).  When the procedure completes the spreadsheet is visible and called "Book1."

I have been trying to modify the code so that I can create an xls with a specficied filename and then save and close the the XLS.

So how can I create an XLS called "c:\\mySpreadsheet.xls"?

Thanks for your help.

The attached snippet (pulled from http://support.microsoft.com/kb/302096/EN-US/)
Excel.Application objApp;
      Excel._Workbook objBook;
 
      private void button1_Click(object sender, System.EventArgs e)
      {
         Excel.Workbooks objBooks;
         Excel.Sheets objSheets;
         Excel._Worksheet objSheet;
         Excel.Range range;
 
         try
         {
            // Instantiate Excel and start a new workbook.
            objApp = new Excel.Application();
            objBooks = objApp.Workbooks;
            objBook = objBooks.Add( Missing.Value );
            objSheets = objBook.Worksheets;
            objSheet = (Excel._Worksheet)objSheets.get_Item(1);
 
            //Get the range where the starting cell has the address
            //m_sStartingCell and its dimensions are m_iNumRows x m_iNumCols.
            range = objSheet.get_Range("A1", Missing.Value);
            range = range.get_Resize(5, 5);
 
            if (this.FillWithStrings.Checked == false)
            {
               //Create an array.
               double[,] saRet = new double[5, 5];
 
               //Fill the array.
               for (long iRow = 0; iRow < 5; iRow++)
               {
                  for (long iCol = 0; iCol < 5; iCol++)
                  {
                     //Put a counter in the cell.
                     saRet[iRow, iCol] = iRow * iCol;
                  }
               }
 
               //Set the range value to the array.
               range.set_Value(Missing.Value, saRet );
            }
 
            else
            {
               //Create an array.
               string[,] saRet = new string[5, 5];
 
               //Fill the array.
               for (long iRow = 0; iRow < 5; iRow++)
               {
                  for (long iCol = 0; iCol < 5; iCol++)
                  {
                     //Put the row and column address in the cell.
                     saRet[iRow, iCol] = iRow.ToString() + "|" + iCol.ToString();
                  }
               }
 
               //Set the range value to the array.
               range.set_Value(Missing.Value, saRet );
            }
 
            //Return control of Excel to the user.
            objApp.Visible = true;
            objApp.UserControl = true;
         }
         catch( Exception theException ) 
         {
            String errorMessage;
            errorMessage = "Error: ";
            errorMessage = String.Concat( errorMessage, theException.Message );
            errorMessage = String.Concat( errorMessage, " Line: " );
            errorMessage = String.Concat( errorMessage, theException.Source );
 
            MessageBox.Show( errorMessage, "Error" );
         }
      }

Open in new window

0
Comment
Question by:soapygus
2 Comments
 
LVL 4

Accepted Solution

by:
shekharsom earned 500 total points
ID: 21770466
try using objBook.SaveAs
0
 

Author Comment

by:soapygus
ID: 21770785
I got SaveAs to work, but I found using the below line was better for my purposes.  Where oName is the FileName that I assigned.

 objBook.Close(true, oName, oMissing);

Thanks.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Some code to ensure data integrity when using macros within Excel. Also included code that helps secure your data within an Excel workbook.
Do you use a spreadsheet like Microsoft's Excel?  Have you ever wanted to link out to a non excel file on your computer or network drive?  This is the way I found to do it!
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question