2015年4月26日 星期日

rdlc 匯出excel,不合法的 xml 字元

rdlc或rdl,在匯出excel(xlsx)後,開啟execl檔,出現『我們發現XXX.xlsx的部份內容有問題。您要我們盡可能嘗試復原嗎?如果您信任此活頁簿,請按一下【是】』。

接著點選【是】 後,就出現以下錯誤:

已取代的部分: /xl/worksheets/sheet1.xml 部分具有 XML 錯誤。  不合法的 xml 字元。 行 17,欄 441033。

測試後,原來有一個欄位的內容造成匯出的錯誤。但不解的是WHY??

這個欄位的內容如下,看起來似乎很正常,但把他COPY起來貼到記事本後,會發現設備前多了一個看似空白的空格。

脈衝電場(PEF)殺菌 設備

解出來是0x0B,在XML上這是個不合法的字元。

所以先把這個看似空白的字元刪除,匯出後開啟EXCEL就OK了。

4 則留言:

  1. MemoryStream ms = new MemoryStream();
    ......

    workbook.Write(ms);
    workbook = null;
    ms.Close();
    ms.Dispose();
    HttpContext.Current.Response.Buffer = true;
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ContentType = "application/octet-stream";
    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode("Name", System.Text.Encoding.UTF8) + ".xlsx\"");
    HttpContext.Current.Response.BinaryWrite(ms.ToArray());
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.End();

    回覆刪除
  2. 您好,請問是如何發現的?我也遇到這問題,可是資料太多,無法一一檢查

    回覆刪除

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...