Hello everyone

First ,My name is Hashem I'm a beginner in c#, I'm trying to open Excel file(2003) but I get error at Open Function in the below code :


(Old Format Or Invalid Library Of kinds (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))


Is there anybody can help me? where I use the following code that i have collected from many reference.
The replies are valuable.

public static Excel.Application ExlApp;
public static Excel.Workbook ExlWrkBook;
public static Excel.Worksheet ExlWrkSheet;


Excel.Application ExcApp = new Excel.Application();
ExcApp.Visible = true;
Excel.Workbook excelWorkbook = ExcApp.Workbooks.Open("D:\\Salary Calc.xls", 0, false, 5, "", "", true,Excel.XlPlatform.xlWindows, "\t", true, false, 0, false, true, true);

Excel.Sheets ExcSheet = excelWorkbook.Worksheets;
string currentSheet = "Sheet1";
Excel.Worksheet excelWorksheet = (Excel.Worksheet)ExcSheet.get_Item(currentSheet);
Excel.Range excelCell = (Excel.Range)excelWorksheet.get_Range("A1", "A1");

What's your Office SDK version?

And, more to the point, which version of excel did you add as a reference?

Hi
I'm using

Microsoft.Office.Interop

Hy,
I did something like what you want in VC++ .NET Framework language. Just use the same classes in C# and it should work (there are some peaces of code that are usefull in my application but do no refer to Excell handling - just not care of). Please note that you have to install Excel 2003 and Windows XP or higher in the system where the application runs.

private: System::Void button7_Click(System::Object^  sender, System::EventArgs^  e) 
            {
            String^ XlsFile = String::Format("Z:\\Documenti\\Lavoro\\Fatture\\2009\\Fattura_02_AEM_marzo_09.xls");
            String^ XlsSheet = String::Format("Milano, {0}/{1}/{2}", 
                                            dateTimePicker1->Value.Day.ToString(),
                                                     dateTimePicker1->Value.Month.ToString(),
                                                     dateTimePicker1->Value.Year.ToString());

            Excel::Application^ oXLApp;
            Excel::Workbook^ oXLWBook;
            //Excel::Sheets^ oXLSheet;
            //Excel::Worksheet^ oXLWSheet;

            Excel::Range^ rng;

            //starts Excel application
            oXLApp = (gcnew Excel::Application());
            oXLApp->Visible = true;
            //opens the workbook of the file "XlsFile"
            oXLWBook = oXLApp->Workbooks->Open(XlsFile, 0, false, 5, "", "",
                true,Excel::XlPlatform::xlWindows, "\t", true, false, 0, false, true, true); 
            //updates the range of sheet1, cell D4
            rng = oXLApp->Range::get("D4","D4");
            rng->Value2 = XlsSheet; 

            }

Hi!
Hope this code will resolve your problem.

using System.Collections;
using Microsoft.Office.Interop.Excel;
using System;
using System.Reflection;
class Sample
{
    static void Main()
    {
        string file = @"c:\csnet\jap\ex1\sample1.xls";
        Microsoft.Office.Interop.Excel.ApplicationClass ap = new ApplicationClass();
        Missing m=Missing.Value;
       Workbook wb=ap.Workbooks.Open(file, m, m, m, m, m, m, m, m, m, m, m, m, m, m);
       Worksheet sh =(Worksheet) wb.Sheets[1];
       for (int i = 1; i < 10; i++)
       {

          string[] p = new string[10];
           for (int j = 1; j <= 10; j++)
           {
               Range r = (Range)sh.Cells[i, j];
               p[j - 1] = r.Value2;
           }
           
       }
        ap.Quit();
       
    }
}

i did the same thing using javascript..may be that helps you..
here is the javascript code:

<html>

<head>

<title></title>

</head>

<body>
<script type="text/javascript">
function read()
{

var myApp = new ActiveXObject("Excel.Application");
if (myApp != null)
{
myApp.visible = true;
myApp.workbooks.open("C:\\Book2.xls");
}
}

</script>
<button onclick="read();">READ</button>
</body>

</html>

i did the same thing using javascript..may be that helps you..
here is the javascript code:

<html>

<head>

<title></title>

</head>

<body>
<script type="text/javascript">
function read()
{

var myApp = new ActiveXObject("Excel.Application");
if (myApp != null)
{
myApp.visible = true;
myApp.workbooks.open("C:\\Book2.xls");
}
}

</script>
<button onclick="read();">READ</button>
</body>

</html>

Nice code. You should post this one on Web forum.

i hope it helped you,if it did then mark it as solved... :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.