Commit 896a5309 by Leo Zheng

excel数据提取

- 需要更多测试
parent ac88b270
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -23,7 +23,9 @@
"request": "^2.88.0",
"svg-captcha": "^1.3.12",
"tencentcloud-sdk-nodejs": "^4.0.562",
"ts-node": "^10.9.2",
"ws": "^5.2.2",
"xlsx": "^0.18.5",
"xml2js": "^0.4.23"
},
"scripts": {
......@@ -44,5 +46,10 @@
"video/**/*"
],
"outputPath": "dist"
},
"devDependencies": {
"@types/jest": "^29.5.12",
"jest": "^29.7.0",
"ts-jest": "^29.1.5"
}
}
import { join } from 'path';
import { readdirSync, readFileSync } from 'fs';
import * as XLSX from 'xlsx';
export class DataExtractor {
private static instance: DataExtractor;
private data: { [key: string]: any } = {};
private constructor() {
this.loadAllData();
}
public static getInstance(): DataExtractor {
if (!DataExtractor.instance) {
DataExtractor.instance = new DataExtractor();
}
return DataExtractor.instance;
}
private loadAllData(): void {
const dirPath = join(__dirname, '../../data');
const files = readdirSync(dirPath).filter(file => file.endsWith('.xlsx'));
console.log("Path is " + files);
files.forEach(file => {
const filePath = join(dirPath, file);
this.data[file] = this.parseExcel(filePath);
});
}
private parseExcel(filePath: string): any {
const file = readFileSync(filePath);
const workbook = XLSX.read(file, { type: 'buffer' });
const sheetNames = workbook.SheetNames;
const data = sheetNames.map(sheetName => ({
sheetName,
data: XLSX.utils.sheet_to_json(workbook.Sheets[sheetName])
}));
return data;
}
public getData(fileName: string): any {
return this.data[fileName];
}
public getAvailableFiles(): string[] {
return Object.keys(this.data);
}
}
import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig";
import { DataExtractor } from "./component/data_extractor";
// import { test2 } from "./test";
let fs = require('fs');
async function lanuch() {
await initConfig();
httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.');
// console.log('This indicates that the server is started successfully.');
try {
const dataExtractor = DataExtractor.getInstance();
const availableFiles = dataExtractor.getAvailableFiles();
console.log('Available files:', availableFiles);
const combinedData = availableFiles.reduce((accumulator, fileName) => {
const data = dataExtractor.getData(fileName);
accumulator[fileName] = data;
return accumulator;
}, {} as { [key: string]: any });
console.log('Combined data:', JSON.stringify(combinedData, null, 2));
} catch (error) {
console.error('Error extracting data:', error.message);
}
// test();
// test2();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment