![](/img/trans.png)
[英]Exporting to .xlsx using Microsoft.Office.Interop.Excel SaveAs Error
[英]Exporting dataset to xlsx with Microsoft.Office.Interop.Excel
我使用以下代碼將數據集導出到xlsx。 當我在.net 4.0上時,一切正常,但是不幸的是,有一台服務器要求該框架位於3.5版中,而我對此無能為力。 所以我將框架從4.0更改為3.5,執行代碼時出現錯誤
舊格式或無效的類型庫。 (來自HRESULT的異常:0x80028018(TYPE_E_INVDATAREAD))
當波紋管執行時發生錯誤
Excel.Workbook workBook = excel.Workbooks.Add();
這是我的代碼
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();
}
有什么建議么 ?
顯然,這是.NET 4.0( 源 )中已修復的錯誤:如果Excel的區域設置與PC的區域設置不同,則會出現此錯誤。
從Microsoft:
當滿足以下條件時,您會收到此錯誤,調用Excel方法:
-該方法需要一個LCID(語言環境標識符)。
-您運行英語版本的Excel。 但是,計算機的區域設置被配置為非英語。
如果客戶端計算機運行英語版本的Excel,並且當前用戶的語言環境配置為使用英語以外的其他語言,則Excel將嘗試查找所配置語言的語言包。 如果找不到語言包,則報告錯誤。
要變通解決此問題,您可以使用下列方法之一:
-為您的Office版本安裝多語言用戶界面包。
-使用InvokeMember執行Excel方法或屬性,以便您可以為調用指定CultureInfo。 例如,以下代碼說明了如何使用“ en-US”作為CultureInfo調用Workbooks對象的Add方法。
-或者,在調用Excel方法之前設置CultureInfo。
請參閱此鏈接以獲取建議的解決方法的代碼示例: http : //support.microsoft.com/kb/320369
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.