亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 ExcelDataReader 時奇怪的 XLS 文件失敗

使用 ExcelDataReader 時奇怪的 XLS 文件失敗

C#
慕少森 2022-01-09 10:30:41
我正在使用從第三方軟件呈現的 XLS 電子表格。如果我在文本編輯器中打開文件,很明顯它是另存為 XLS 文件的 HTML。根據我發現的幾篇文章,MS 似乎曾經允許這種模式,并且最近在 Excel 中停止了:Office 論壇:XLS 文件無法在 Excel 2016 中打開,只有灰色視圖UserVoice:不再打開 HTML 格式的文件(帶有 XLS 擴展名) - 歡迎使用 Excel 的建議框!所以,現在到實際的技術問題。如果我使用以下CreateReader方法將文件(作為流)直接發送到 ExcelDataReader 中,則會引發此錯誤:“無效的文件簽名?!盜ExcelDataReader excelReader; excelReader = ExcelReaderFactory.CreateReader(stream);另一方面,如果我在 Excel 中打開它并執行“另存為”并將 XLS 保存為 XLSX,然后將其發送到我的代碼中;它進口良好。我的偏好是不強迫我的用戶執行“另存為”步驟。讓第三方改變他們的格式并不是一個現實的選擇(眾所周知)。使用 ExcelDataReader 進行這項工作的任何建議或技巧?這是我在 Notepad++ 中打開 XLS 時看到的屏幕截圖(注意 xls 擴展名):
查看完整描述

1 回答

?
DIEA

TA貢獻1820條經驗 獲得超3個贊

我的偏好是不強迫我的用戶執行“另存為”步驟。讓第三方改變他們的格式并不是一個現實的選擇(眾所周知)。


因此,我可以建議您Microsoft.Office.Interop.Excel在ExcelDataReader讀取之前使用package 將其保存為支持的格式,如下所示:


var app = new Microsoft.Office.Interop.Excel.Application();

var workbook = app.Workbooks.Open(htmlFileName);


if (File.Exists(excelFileName))

{

    File.Delete(excelFileName);

}


workbook.SaveAs(

    excelFileName,

    Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault,

    Type.Missing, Type.Missing,  

    false, false,

    Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,

    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);


workbook.Close();

app.Quit();

app = null;

workbook = null;


using (var stream = File.Open(excelFileName, FileMode.Open, FileAccess.Read))

{

    var reader = ExcelReaderFactory.CreateReader(stream);

    // ...

}


查看完整回答
反對 回復 2022-01-09
  • 1 回答
  • 0 關注
  • 627 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號