Bạn có thể xử lý việc tải nội dung tệp Excel bằng cách viết mã Java bằng thư viện Apache POI (https. //poi. apache. tổ chức/). Thư viện được phát triển để làm việc với dữ liệu ứng dụng MS office bao gồm Excel
Gần đây tôi đã tạo ứng dụng dựa trên công nghệ sẽ giúp bạn tải các tệp Excel vào cơ sở dữ liệu MongoDB
Ứng dụng này có sẵn dưới http. //www. abespalov. com/ và chỉ được thử nghiệm cho Windows, nhưng cũng sẽ hoạt động với Linux. Ứng dụng sẽ tự động tạo bộ sưu tập cần thiết và điền vào bộ sưu tập nội dung tệp Excel. Bạn có thể xuất nhiều tệp song song. Bạn có thể bỏ qua bước chuyển đổi tệp sang định dạng CSV. Ứng dụng xử lý các định dạng xls và xlsx
Các giai đoạn ứng dụng tổng thể là
1) Tải nội dung tệp excel. Đây là mã tùy thuộc vào phần mở rộng tập tin
fileExtension = FilenameUtils.getExtension(inputSheetFile.getName()); if (fileExtension.equalsIgnoreCase("xlsx")) { workbook = createWorkbook(openOPCPackage(inputSheetFile)); } else { workbook = createWorkbook(openNPOIFSFileSystemPackage(inputSheetFile)); } sheet = workbook.getSheetAt(0);2) Thiết lập kết nối MongoDB. Tôi sử dụng thư viện MongoClientURI;
MongoClientURI mongoClientURI = new MongoClientURI( "mongodb://" + dbUser + ":" + dbPassword + "@" + dbServer + ":" + dbPort + "/" + dbDatabase); excel2db.mongoClient = new MongoClient(mongoClientURI);3) Lặp lại trang tính và chèn hàng vào bộ sưu tập. Đây là một đoạn mã Java
Row row = (Row) rowIterator.next(); //get column names from a header short minColIdx = row.getFirstCellNum(); short maxColIdx = row.getLastCellNum(); ArrayList columnNameList = new ArrayList(); String columnName; logger.info("The table {} is being populated", tableName); //populate a list of column names for (short colIdx = minColIdx; colIdx < maxColIdx; colIdx = (short) (colIdx + 1)) { columnNameList.add(row.getCell(colIdx) == null? "": row.getCell(colIdx).toString()); } while (rowIterator.hasNext()) { Document document = new Document(); Row rowData = (Row) rowIterator.next(); numOfProcessedRows++; for (short colIdx = minColIdx; colIdx < maxColIdx; colIdx = (short) (colIdx + 1)) { document.put(columnNameList.get(colIdx), rowData.getCell(colIdx).toString()); } //save the document into a collection, point to the database MongoCollection mongoCollection = mongoDB.getCollection(tableName); mongoCollection.insertOne(document); } }Tại đây, bạn có thể tìm thấy tất cả mã Java cho ứng dụng được tạo để xuất excel sang Postgres (https. //github. com/palych-piter/Excel2DB)
MongoDB là một cơ sở dữ liệu định hướng tài liệu NoSQL mã nguồn mở, lưu trữ dữ liệu ở định dạng JSON. Nó là một cơ sở dữ liệu phân tán được thiết kế để lưu trữ một lượng lớn dữ liệu
Trong bài viết này, chúng ta sẽ xem xét cách dữ liệu excel có thể được nhập vào cơ sở dữ liệu MongoDB và được lưu trữ dưới dạng tài liệu trong bộ sưu tập được chỉ định. Việc triển khai MongoDB được thực hiện với Node. js + Express. js và nó sẽ đọc dữ liệu từ bảng excel và nhập thẳng vào cơ sở dữ liệu của bạn
Thiết lập dự ánTạo một dự án từ thiết bị đầu cuối
mkdir my-appcd my-app
npm init
Cài đặt mô-đun npm
npm install express csvtojson mongoose multer ejsđa năng. Multer là một nút. js để xử lý dữ liệu nhiều phần/biểu mẫu, chủ yếu được sử dụng để tải tệp lên
csvtojson. Mô-đun này được sử dụng để chuyển đổi tệp CSV thành tệp JSON
Tạo nút. ứng dụng js expressTạo một tệp có tên ứng dụng. js và nhập các mô-đun
const express = require('express')const mongoose = require('mongoose')
const multer = require('multer')
const Student = require('./studentSchema')
const csvtojson = require('csvtojson')
const app = express()
mongoose.connect('mongodb://localhost:27017/MongoExcelDemo').then(() => { // MongoDB connection
console.log('database connected')
});
app.use(express.static('public')) // static folder
app.set('view engine','ejs') // set the template engine
app.listen(3000, () => {
console.log('server started at port 3000')
})
Mô-đun sinh viên trong cơ sở dữ liệu
Ở đây, chúng ta sẽ tạo một mô-đun sinh viên bằng cách tạo một sinh viên. js để lưu trữ dữ liệu sinh viên trong bộ sưu tập có tên Sinh viên
const mongoose = require('mongoose')const studentSchema = mongoose.schema({
name : {type : String, required : true},
email : {type: String, required : true},
standard : {type: String, required: true}
})
module.exports = mongoose.model('Student', studentSchema)
Tạo đánh dấu biểu mẫu để tải lên tệp excel trong chỉ mục. tập tin ejs
Ở đây, form sẽ lấy dữ liệu từ file excel, file này phải ở định dạng CSV
<HTML><body>
<form action="/uploadExcelFile" enctype="multipart/form-data" method="post">
<input type="file" name="uploadfile" accept='application/vnd.openxmlformats-
officedocument.spreadsheetml.sheet, application/vnd.ms-excel' >
<input type="submit" class="p-10 w-100" value="Upload Excel">
</form>
</body>
</html>
Tải tệp lên cơ sở dữ liệu
Multer khá phổ biến vì tính hiệu quả và cơ bản để xử lý các tệp trong một máy chủ tốc hành
Để ứng dụng cấp tốc chấp nhận tệp, chúng tôi sẽ sử dụng bộ lưu trữ Multer để xử lý tệp tải lên. Bộ nhớ này sẽ được sử dụng để truy cập tệp đã tải lên
Ứng dụng. js
________số 8_______Đoạn mã trên sẽ tạo ổ đĩa để lưu trữ tệp trong thư mục chung của thư mục gốc. Bằng cách nhấp vào nút gửi, dữ liệu được tìm nạp từ mỗi hàng của tệp đã tải lên và sẽ được nhập vào bộ sưu tập sinh viên bằng cách sử dụng nhiều phương pháp chèn