Solved

How do I save data to a specific version of Excel in C#?

Posted on 2008-09-29
2
309 Views
Last Modified: 2008-10-02
Below I have attached my present code which works fine, but saves data to an unrecognized Excel format.  When opening the file in Excel, the following error is produced:

"The file you are trying to open, 'filename.xls', is in a different format than specified by the file extension.  Verify that the file is not corrupted and is from a trusted source before opening the file.  Do you want to open the file now?"

Answering "Yes" causes the file to open normally.  But, I have another application that reads in Excel files and this format issue prevents the import of Excel data.  

Trying different parameters for the key line:

m_objBook.SaveAs(m_strSampleFolder + todaysDate + OrgSelection + ".xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

has not yet revealed the solution.  Thoughts?

//************************************* The following code creates an excel spreadsheet and deposits data. *******************************
            // Start a new workbook in Excel.
            m_objExcel = new Excel.Application();
            m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
            m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));
            m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
            m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
            m_objSheet.Name = "GPS";
 
            // Create an array for the headers and add it to cells A1:L1.
            object[] objHeaders = { "AccountNumber", "Code", "Contract Price", "Date Time", "Extended Price", "ManualPrice", "NumberOfSets", "NumberOfSheets", "PO Number", "Project", "Size", "SqFeet Bond", "SqFeet Mylar", "SqFeet Vellum", "Total Sq ft" };
            m_objRange = m_objSheet.get_Range("A1", "L1");
            m_objRange.Value2 = objHeaders;
            m_objFont = m_objRange.Font;
            m_objFont.Bold = true;
 
            // Get array and add it to the worksheet starting at cell A1.
            m_objRange = m_objSheet.get_Range("A1", m_objOpt);
            m_objRange = m_objRange.get_Resize(20000, 15);
            m_objRange.Value2 = excelOutputArray;
 
            // Format cells to numeric format.  (remaining issue:  array data is string, need to create decimal valued array for numeric data)
            m_objRange = m_objSheet.get_Range("C2", "C20001");
            m_objRange.NumberFormat = "###0.0000";
            m_objRange = m_objSheet.get_Range("E2", "E20001");
            m_objRange.NumberFormat = "###0.0000";
            m_objRange = m_objSheet.get_Range("F2", "F20001");
            m_objRange.NumberFormat = "###0.0000";
            m_objRange = m_objSheet.get_Range("G2", "G20001");
            m_objRange.NumberFormat = "###0";
            m_objRange = m_objSheet.get_Range("H2", "H20001");
            m_objRange.NumberFormat = "###0";
            m_objRange = m_objSheet.get_Range("K2", "K20001");
            m_objRange.NumberFormat = "###0";
            m_objRange = m_objSheet.get_Range("L2", "L20001");
            m_objRange.NumberFormat = "###0.0000";
            m_objRange = m_objSheet.get_Range("M2", "M20001");
            m_objRange.NumberFormat = "###0.0000";
            m_objRange = m_objSheet.get_Range("N2", "N20001");
            m_objRange.NumberFormat = "###0.0000";
            m_objRange = m_objSheet.get_Range("O2", "O20001");
            m_objRange.NumberFormat = "###0.#";
 
            StartWizardBtn.Text = "Saving Data to Disk...";
            Application.DoEvents(); 
 
            // Save the Workbook and quit Excel.
            m_objBook.SaveAs(m_strSampleFolder + todaysDate + OrgSelection + ".xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
            m_objBook.Close(false, m_objOpt, m_objOpt);
            m_objExcel.Quit();
 
 
 
            StartWizardBtn.Text = "Start Wizard";
            Application.DoEvents(); 
 
        }

Open in new window

0
Comment
Question by:dparkes
2 Comments
 
LVL 5

Accepted Solution

by:
johnaryan earned 350 total points
ID: 22601107
It depends on the verdion of the Excel Libraries your using.
The latest i think is Microsoft.Office.Interop.Excel Version 12.

Good Reference:http://msdn.microsoft.com/en-us/library/aa163987.aspx
0
 
LVL 1

Author Comment

by:dparkes
ID: 22605043
The intended users will all be using a 2007 version of Excel.  Is there alternate code and/or methods that will allow a C# 2008 program to automatically save array data to a programmatically specified older Excel format (ie. Excel '97)?
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Printing 1 59
Name Space error VS2015 1 27
Where does legacy ASP.NET initialize language? 2 26
itextsharp with c# 3 9
Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

828 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