iT邦幫忙

0

JS 是否可以匯入「.xls」

  • 分享至 

  • xImage

您好:
請問 JS 是否可以匯入「.xls」

之前有EXCELJS 可以匯入/出 xlsx
但 無法處理 .xls

所以想說,是否有其他方式可以處理
謝謝

山不轉路轉~
那就將.xls另存成.xlsx檔案...0.0a
kikulu iT邦研究生 3 級 ‧ 2024-11-08 14:25:23 檢舉
當csv讀入看看,或試用看看sheet.js
noway iT邦研究生 1 級 ‧ 2024-11-08 15:15:34 檢舉
您好:
有想過 要另存新檔成xlsx,只是想說看有沒有直接處理的方式
謝謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0

Yes! it is possible.

noway iT邦研究生 1 級 ‧ 2024-11-07 15:52:22 檢舉

用什麼元件?
excelJS 只可以 處理xlsx
不能處理 xls
謝謝

0
Yaowen
iT邦研究生 3 級 ‧ 2024-11-07 15:55:05
noway iT邦研究生 1 級 ‧ 2024-11-08 07:56:25 檢舉

您好:
這要費用?

Yaowen iT邦研究生 3 級 ‧ 2024-11-08 14:18:03 檢舉

對這要費用

2
rain_yu
iT邦研究生 5 級 ‧ 2024-11-08 08:26:45

您好!

在 JavaScript 中,處理 .xls 檔案(即 Excel 97-2003 格式)相對較為繁瑣,因為許多流行的庫主要針對 .xlsx 格式。不過,您還是有一些選擇可以處理 .xls 檔案:

  1. SheetJS (xlsx):

    • SheetJS 是一個非常流行的 JavaScript 庫,主要用於處理 Excel 檔案。雖然它主要支援 .xlsx 格式,但它也能支援 .xls 檔案的解析。您可以使用 xlsx 方法來讀取 .xls 檔案。
    const XLSX = require('xlsx');
    
    // 讀取 .xls 檔案
    const workbook = XLSX.readFile('path/to/your/file.xls');
    
    // 取得工作表
    const sheetName = workbook.SheetNames[0];
    const worksheet = workbook.Sheets[sheetName];
    
    // 轉換為 JSON
    const data = XLSX.utils.sheet_to_json(worksheet);
    console.log(data);
    
  2. 其他庫:

    • js-xls: 這是一個專門用於處理 .xls 檔案的庫,但功能上可能不如 SheetJS 完整。
    • ExcelJS: 雖然您提到 ExcelJS 主要處理 .xlsx,不過它在某些情況下也能處理 .xls,但可能需要轉換格式。
  3. 後端處理:

    • 若需要,可以考慮將 .xls 檔案上傳到伺服器,然後使用後端語言(如 Python 的 pandas 或 PHP 的 PhpSpreadsheet)來處理這些檔案,再將處理後的資料透過 API 傳回前端。
noway iT邦研究生 1 級 ‧ 2024-11-08 17:13:56 檢舉

您好:謝謝
我有再另外參考
https://blog.csdn.net/Naisu_kun/article/details/128483299
但有亂碼,
參考
https://www.cnblogs.com/zhangchenyi/p/sheetjs_csv.html

但沒有效?? codepage:950

  const workbook = XLSX.read(data, {
                type: 'binary',
                codepage:950
            });

請問還有哪邊需要設定嗎?
謝謝

rain_yu iT邦研究生 5 級 ‧ 2024-11-12 10:22:11 檢舉

在處理 .xls 檔案或帶有中文的 CSV 檔案時,遇到編碼問題是常見的情況。根據您提供的資訊和相關的問題,這裡有一些步驟和建議,幫助您解決使用 SheetJS 時中文解析為亂碼的問題:

1. 確認檔案的編碼

首先,確保您處理的檔案確實是使用正確的編碼格式。可以使用 VS Code 或其他文本編輯器查看檔案的編碼。

2. 使用正確的 codepage 參數

當使用 XLSX.read() 讀取檔案時,codepage 參數非常重要。根據您的情況,您應該依據檔案的實際編碼來設定:

  • 936:簡體中文 (GBK)
  • 950:繁體中文 (Big5)

3. 讀取檔案的範例程式碼

以下是一個使用 FileReaderSheetJS 來讀取 .xls 檔案的範例:

var fileField = document.getElementById('custpage_file');
var file = fileField.files[0];
if (!file) { return; }

var reader = new FileReader();
reader.onload = function (e) {
    var data = e.target.result;

    // 使用正確的 codepage 參數
    var wb = XLSX.read(data, {
        type: 'binary',
        codepage: 936 // 根據需要調整為 950
    });

    // 取得工作表
    var sheetName = wb.SheetNames[0];
    var worksheet = wb.Sheets[sheetName];

    // 轉換為 JSON
    var jsonData = XLSX.utils.sheet_to_json(worksheet);
    console.log(jsonData);
};

reader.readAsBinaryString(file);

4. 錯誤處理

如果仍然遇到問題,請檢查以下幾點:

  • 檔案是否正確讀取:可以在 reader.onload 中加入 console.log(data); 來檢查讀取的內容。
  • FileReader 的使用:確保使用 readAsBinaryString 方法,這對於 .xls 檔案是必要的。
  • 檔案大小和格式:確認檔案不是損壞的,且是正確的 .xls 格式。

5. 其他選擇

如果上述方法仍無法解決問題,您可以考慮以下替代方案:

  • 後端處理:將檔案上傳到伺服器,使用後端語言(如 Python 的 pandas 或 PHP 的 PhpSpreadsheet)來處理檔案,然後將處理後的資料返回前端。
  • 使用其他庫:考慮使用專門處理 .xls 檔案的庫,如 js-xls,雖然功能可能不如 SheetJS 完整。

希望這些建議能幫助您解決問題!如果還有其他問題,請隨時告訴我。

我要發表回答

立即登入回答