解決打開 Excel 檔案遇到「已移除的記錄: /xl/worksheets/sheet1.xml 部分的公式」

打開 Excel 檔案遇到「已移除的記錄: /xl/worksheets/sheet1.xml 部分的公式」,修正儲存格文字即可解決

問題狀況:

利用 PHPExcel 將資料庫的資料列轉換成 Excel 檔案,因為包含使用者自行產生的內容,導致儲存格內容是以等號 (=) 、加號 (+)、減號 (-) 或 @ 符號開頭,而會被視作公式。


解決方式:

方法1: 

打開 Excel 檔案時,Microsoft Excel 檔案已經移除部分公式。另存新檔,就不會遇到相同錯誤訊息。(需要比較兩種 Excel 檔案內容)

方法2: 

如果 Excel 檔案是從資料庫產生,則可以使用下面資料庫 SQL 語法重新產生 Excel 檔案。

下面查詢語法的 string_column 是出錯的內容欄位,通常因為使用者自行輸入的內容,而導致包含特殊字元。查詢語法將欄位值文字的第一個字前面插入單引號,將誤判為公式的文字內容轉換成字串:
SELECT
SUBSTRING(
IF(
LEFT(`string_column`, 1) = '='
OR LEFT(`string_column`, 1) = '+'
OR LEFT(`string_column`, 1) = '-'
OR LEFT(`string_column`, 1) = '@',
CONCAT('\'', `string_column`),
`string_column`
) ,
1,
32767)
FROM `table`
重新輸出 Excel 檔案,即可解決。

錯誤訊息「已移除的記錄: /xl/worksheets/sheet1.xml 部分的公式」代表第 1 個工作表的儲存格有問題。「sheet2.xml」則代表第 2 個工作表的儲存格有問題。

Excel 提供的 Log 檔:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><logFileName>error761960_03.xml</logFileName>
<summary>檔案 'C:\Users\User\Desktop\file_name.xlsx' 中偵測出錯誤</summary><removedRecords>
   <removedRecord>已移除的記錄: /xl/worksheets/sheet1.xml 部分的 公式</removedRecord>
   <removedRecord>已移除的記錄: /xl/worksheets/sheet2.xml 部分的 公式</removedRecord></removedRecords>
</recoveryLog>

相關資料



圖片素材


留言