打開 Excel 檔案遇到「已移除的記錄: /xl/worksheets/sheet1.xml 部分的公式」,修正儲存格文字即可解決
下面查詢語法的 string_column 是出錯的內容欄位,通常因為使用者自行輸入的內容,而導致包含特殊字元。查詢語法將欄位值文字的第一個字前面插入單引號,將誤判為公式的文字內容轉換成字串:
錯誤訊息「已移除的記錄: /xl/worksheets/sheet1.xml 部分的公式」代表第 1 個工作表的儲存格有問題。「sheet2.xml」則代表第 2 個工作表的儲存格有問題。
<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>
圖片素材
問題狀況:
利用 PHPExcel 將資料庫的資料列轉換成 Excel 檔案,因為包含使用者自行產生的內容,導致儲存格內容是以等號 (=) 、加號 (+)、減號 (-) 或 @ 符號開頭,而會被視作公式。解決方式:
方法1:
打開 Excel 檔案時,Microsoft Excel 檔案已經移除部分公式。另存新檔,就不會遇到相同錯誤訊息。(需要比較兩種 Excel 檔案內容)
方法2:
如果 Excel 檔案是從資料庫產生,則可以使用下面資料庫 SQL 語法重新產生 Excel 檔案。
下面查詢語法的 string_column 是出錯的內容欄位,通常因為使用者自行輸入的內容,而導致包含特殊字元。查詢語法將欄位值文字的第一個字前面插入單引號,將誤判為公式的文字內容轉換成字串:
SELECT重新輸出 Excel 檔案,即可解決。
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`
錯誤訊息「已移除的記錄: /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>
相關資料
- excel was able to open the file by repairing or removing... - Microsoft Community 提到等號開始的文字會造成問題
- 解決 Navicat 「存放裝置空間不足,無法完成此操作」問題訊息
圖片素材
- Free image of business, working, cafe - StockSnap.io Thanks, Negative Space!
留言
張貼留言