Làm cách nào để nhập tệp excel vào nút?

Bạn đã bao giờ cần lấy và phân tích dữ liệu từ Excel (. xlsx) Bảng tính trong nút. js?

Trong bài viết này, chúng tôi sẽ tập trung vào,

  1. Đọc dữ liệu từ tệp bảng tính

  2. Hiểu cách dữ liệu được trả về

  3. Lấy danh sách (tên) các trang tính trong sổ làm việc

  4. Chỉ định từ trang tính nào chúng tôi muốn dữ liệu

đọc tập tin

Cài đặt

Bạn sẽ cần phải có nút. js đã cài đặt

Bạn có thể tạo bất kỳ tệp Excel nào bạn thích, ảnh chụp màn hình của tệp đơn giản mà tôi sẽ sử dụng cho bài viết này ở bên dưới. Tôi đặt tên tệp là Dữ liệu. xlsx

Làm cách nào để nhập tệp excel vào nút?
dữ liệu excel. Trang tính mặc định1

Tôi sẽ sử dụng Visual Studio Code (VSCode)

  1. Mở cửa sổ terminal của bạn và gõ, npm init. Bạn chỉ có thể chấp nhận các giá trị mặc định sẽ làm cho tệp chính của chúng ta **index. js ** như đã thấy trong gói của bạn. tập tin json

  2. Trong cửa sổ đầu cuối của bạn, hãy nhập nội dung sau để cài đặt gói làm cho tất cả hoạt động

    npm cài đặt tệp đọc-excel

  3. Tạo một tệp có tên là chỉ mục. js và mở nó

Đọc tệp Excel

Bây giờ chúng tôi đã sẵn sàng để đọc tệp

Thêm đoạn mã sau vào chỉ mục của bạn. tập tin js

const xlsxFile = require('read-excel-file/node');

xlsxFile('./Data.xlsx').then((rows) => {


}

Ghi chú bên lề. Trong câu lệnh yêu cầu, chúng tôi đã chỉ định /node. Điều này rất quan trọng vì điều này cũng có thể được thực hiện với JavaScript trong trình duyệt bằng cách sử dụng,

import xlsxFile from 'read-excel-file'

Tuy nhiên, chúng tôi muốn phiên bản nút

Mật mã

Dòng đầu tiên nhập gói

Dòng thứ hai đọc tệp, trả lại lời hứa. Khi đọc xong, chúng tôi nhận được các mảng

Mỗi mảng (tham số hàng của hàm gọi lại) chứa một hàng trong bảng tính. Mỗi trong số này có ba mảng tương ứng với ba cột trong bảng tính của chúng tôi

Về cơ bản, chúng tôi đang lấy lại một mảng hai chiều

Xem dữ liệu thô

Sửa đổi mã của bạn để xác minh rằng chúng tôi đang lấy dữ liệu từ tệp

const xlsxFile = require('read-excel-file/node');

xlsxFile('./Data.xlsx').then((rows) => {
 console.log(rows);
 console.table(rows);
})

Chạy cái này ở chế độ gỡ lỗi, **F5, **và sau đó chạy mà không cần gỡ lỗi, Ctrl+F5

Chạy trong cả hai sẽ giúp chúng tôi hình dung những gì chúng tôi đang nhận lại cũng như xác minh dữ liệu đã được đọc từ tệp

F5

Làm cách nào để nhập tệp excel vào nút?

Ở đây chúng ta thấy chúng ta có một mảng có năm phần tử. Mỗi phần tử là một hàng từ tệp của chúng tôi. Mỗi hàng chứa một mảng có ba phần tử. Ba mảng này tương ứng với các cột của chúng tôi. Mảng hai chiều

CTRL+F5

Làm cách nào để nhập tệp excel vào nút?

Điều này cho một bức tranh tốt hơn về cấu trúc mảng

Lấy dữ liệu thực tế

Vì dữ liệu ở dạng mảng nên có thể dễ dàng truy cập. Dưới đây là hai cách để truy cập dữ liệu

vòng lặp forEach

Sửa đổi mã của bạn như sau để xem từng phần dữ liệu và đó là loại dữ liệu

Tham số **dữ liệu ** chứa chứa mục nhập ô bảng tính

const xlsxFile = require('read-excel-file/node');

xlsxFile('./Data.xlsx').then((rows) => {

rows.**forEach**((col)=>{
        col.**forEach**((data)=>{
          console.log(data);
          console.log(typeof data);
    })

})
})

Đối với mục đích của chúng tôi, đầu ra chỉ là một danh sách, nhưng chúng tôi có quyền truy cập vào dữ liệu và có thể xác minh loại dữ liệu của nó

Làm cách nào để nhập tệp excel vào nút?
Đầu ra sử dụng forEach

vì. trong vòng lặp

Sửa đổi mã của bạn để sử dụng vòng lặp for…in

const xlsxFile = require('read-excel-file/node');

xlsxFile('./Data.xlsx').then((rows) => {

**for (i in rows)**{
       for (j in **rows[i]**){
           console.dir(**rows[i][j]**);

}
   }

})

Kết quả tương tự khi chạy nhưng mã này cho phép chúng ta nhìn rõ hơn cấu trúc mảng và cách truy cập các phần tử mảng

**rows[i][j] **chứa dữ liệu trong từng ô của bảng tính

Xử lý nhiều trang tính

Điều gì sẽ xảy ra nếu chúng ta có hai trang tính có tên là Dev và Exec?

Theo mặc định, khi chúng tôi đọc, tờ đầu tiên được đọc. Tuy nhiên chúng ta có thể,

  • Lấy danh sách tên sheet

  • Chỉ định Trang tính mà chúng tôi muốn dữ liệu

Tệp Excel đã sửa đổi

Tôi đã sửa đổi tệp Excel của mình, Dữ liệu. xlsx, để có hai trang tính

Làm cách nào để nhập tệp excel vào nút?
Bảng phát triển

Làm cách nào để nhập tệp excel vào nút?
Bảng điều hành

Lấy danh sách tên trang tính

Tên trang tính được trả về dưới dạng một mảng đối tượng. Mỗi đối tượng có cấu trúc,

{Tên. 'tên trang tính'}

Trong trường hợp của chúng tôi, nó sẽ trả về mảng này, [{name. 'Nhà phát triển'}, {tên. ‘Exec’}]

Sửa đổi mã của bạn như sau để có danh sách các trang tính

const xlsxFile = require('read-excel-file/node');

xlsxFile('./Data.xlsx', **{ getSheets: true }**).then((**sheets**) => {

      **sheets**.forEach((**obj**)=>{

           console.log(obj.name);
       })
   })

Ở đây chúng tôi đã chuyển tham số đối tượng { getSheets. thật }

Sau đó, sử dụng vòng lặp forEach để lặp qua mảng trang tính và truy cập thuộc tính **name **của từng đối tượng

Làm cách nào để nhập tệp excel vào nút?
Truy cập tên trang tính. Nhà phát triển, Giám đốc điều hành

Chỉ định trang tính để lấy dữ liệu

Để chỉ định trang tính mong muốn, chúng tôi sẽ chuyển **{sheet. } **tham số đối tượng. Cái này có hai dạng. Bạn có thể chỉ định theo số trang tính hoặc tên trang tính. Để truy cập trang 2, chúng ta có thể sử dụng một trong những cách sau,

  • {tấm. 2 }

  • {tấm. 'Thực thi'}

Sửa đổi mã của bạn như sau để truy cập dữ liệu của bảng Exec

const xlsxFile = require('read-excel-file/node');

xlsxFile('./Data.xlsx', **{ sheet: 'Exec' }**).then((rows) => {

for (i in rows){
        for (j in rows[i]){
            console.log(rows[i][j]);
        }
    }

})

Làm cách nào để nhập tệp excel vào nút?
Sheet2, Exec, dữ liệu

Phần kết luận

Gói npm thực hiện tất cả công việc đọc tệp. Phần quan trọng là cách dữ liệu được trả về. Nó được trả về dưới dạng một mảng hai chiều

Làm cách nào để đọc dữ liệu từ tệp excel trong NodeJs?

Dòng đầu tiên nhập gói. .
Dòng thứ hai đọc tệp, trả lại lời hứa. .
Xem dữ liệu thô
Chạy cái này ở chế độ gỡ lỗi, F5, rồi chạy mà không cần gỡ lỗi, Ctrl + F5
vòng lặp forEach
Tham số dữ liệu chứa chứa mục nhập ô bảng tính
vì. trong vòng lặp
rows[i][j] chứa dữ liệu trong mỗi ô của bảng tính

Làm cách nào để sử dụng xlsx trong NodeJs?

XLSX. writeFile(wb, 'sampleData. xuất khẩu. .
đồ dùng. sheet_to_csv tạo CSV
đồ dùng. sheet_to_txt tạo Văn bản có định dạng UTF16
đồ dùng. sheet_to_html tạo HTML
đồ dùng. sheet_to_json tạo ra một mảng các đối tượng
đồ dùng. sheet_to_formulae tạo danh sách các công thức

Làm cách nào để tải lên tệp excel trong nút js và mongodb?

Thiết lập dự án .
mkdir ứng dụng của tôi. cd ứng dụng của tôi. khởi tạo npm
npm cài đặt express csvtojson mongoose multer ejs
const express = require('express') const mongoose = require('mongoose') const multer = require('multer').
const cầy mangut = require('mongoose') const studentSchema = cầy mangut. lược đồ({.

Làm cách nào để đọc tệp excel lớn trong NodeJs?

luồng js. .
Bước 1. Tạo nút. ứng dụng js. .
Bước 2. Cài đặt phụ thuộc. Tiếp theo, cài đặt các gói fs và readline. .
Bước 3. Đọc tệp. .
Bước 4. Phân tích tệp. .
Bước 5. Xuất dữ liệu được phân tích cú pháp