I was using the following Code in order to export a dataset to xlsx. Everything works fine when i am on .net 4.0 but there is a server that requires the framework to be in 3.5 unfortunately and i can't do anything about it. So i changed the framework from 4.0 to 3.5 and when i execute the code i get an error
Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
the error happens when the bellow line executes
Excel.Workbook workBook = excel.Workbooks.Add();
this is my Code
static void Main(string[] args)
{
String filepath = "C:/test.csv";
DataSet ds = Convert(filepath.ToString(), "tblCustomers", "\t");
Excel.Application excel = new Excel.Application();
Excel.Workbook workBook = excel.Workbooks.Add();
Excel.Worksheet sheet = (Excel.Worksheet)workBook.ActiveSheet;
int i = 0;
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
sheet.Cells[i + 1, j + 1] = ds.Tables[0].Columns[j].ToString();
}
i = 1;
foreach (DataRow row in ds.Tables[0].Rows)
{
for (int j = 0; j < row.ItemArray.Length; j++)
{
sheet.Cells[i + 1, j + 1] = row[j].ToString().Trim();
//cleangth = row[j].ToString().Trim().Length *10;
}
i++;
}
workBook.SaveAs(@System.IO.Directory.GetCurrentDirectory() + "\\test.xlsx");
workBook.Close();
}
Any suggestions ?
This apparently is a bug which was fixed in .NET 4.0 (source): if the regional setting of Excel is different from the regional setting of the PC, you will get this error.
From Microsoft:
You receive this error calling an Excel method when the following conditions are true:
-The method requires an LCID (locale identifier).
-You run an English version of Excel. However, the regional settings for the computer are configured for a non-English language.
If the client computer runs the English version of Excel and the locale for the current user is configured for a language other than English, Excel will try to locate the language pack for the configured language. If the language pack is not found, the error is reported.
To work around this problem, you can use one of the following methods:
-Install the Multilingual User Interface Pack for your version of Office.
-Execute the Excel method or property by using InvokeMember so that you can specify the CultureInfo for the call. For example, the following code illustrates how you can invoke the Workbooks object Add method with "en-US" as the CultureInfo
-Or, set the CultureInfo prior to calling the Excel method.
see this link for code examples of the suggested workarounds: http://support.microsoft.com/kb/320369
User contributions licensed under CC BY-SA 3.0