翻譯成 Translate to... English | 繁體中文 | 简体中文

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

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

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


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

方法2: 與 解決 Navicat 「存放裝置空間不足,無法完成此操作」問題訊息 的處理方式一樣。

下例 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>

相關資料


圖片素材


留言

facebook page