2020年6月4日 星期四

[研究][ASP.NET] 用 Excel 開啟匯出的 .xlsx 出現【Excel無法開啟檔案 'xxxxx.xlsx',因為檔案格式或副檔名無效,請確認檔案沒有損毀,且副檔名符合檔案的格式。】

[研究][ASP.NET] 用 Excel 開啟匯出的 .xlsx 出現【Excel無法開啟檔案 'xxxxx.xlsx',因為檔案格式或副檔名無效,請確認檔案沒有損毀,且副檔名符合檔案的格式。】

2020-06-04

如果 SQL Server 資料庫用 ASP.NET 程式產生的 .ods 檔案,有些可以正常 Excel 開啟,有些無法用 Excel 開啟,而出現:

【Excel無法開啟檔案 'xxxxx.xlsx',因為檔案格式或副檔名無效,請確認檔案沒有損毀,且副檔名符合檔案的格式。】


【我們發現 'xxxxx.xlsx' 的部分內容有問題。您要我們儘可能嘗試復原嗎?如果您信任此活頁簿的來源,請按一下 [是]。】


可能是
  • 匯出用的元件是較早期的,或使用不依靠元件的程式寫法,產生的Excel檔案其實不標準,或是早期的格式,早期Excel是可以開啟和運作;後來較新版 Excel 做了較嚴格的檢查,而出現警告,讓使用者自行判斷是否安全。
  • 資料包含 .xlsx 檔案無法允許的字元 (一般是不可見字元),但是該字元在 C# 的 string 變數、SQL Server 的 nvarchar 欄位和 ASP.NET 網頁是允許使用的。
  • 例如填寫者匯入檔案的資料使用 0x16 (SYN  同步用暫停) 或 0x08 (Backspace),可能是從某資料來源複製內容時,一併複製過來。

(完)

相關

C#去除字串中的不可見內容

ASCII - 維基百科,自由的百科全書

如何在 .NET 中使用字元編碼類別

中文字 unicode 範圍
整理 Unicode 經常會使用到的內碼區域並透過 Regex 自動比對文字

沒有留言:

張貼留言