这是一个专门用于处理Excel文件中SERIAL_NUMBER列的工具,主要功能包括:
- 识别并拆分SERIAL_NUMBER列中的多个序列号
- 保留其他所有列数据不变
- 提供可视化统计和错误处理
- 支持自定义分隔符规则
- React 18:前端UI框架
- TypeScript:类型安全的JavaScript超集
- Vite:构建工具
| 库名称 | 用途 | 版本 |
|---|---|---|
| react-router-dom | 路由管理 | ^7.3.0 |
| xlsx | Excel文件解析 | ^0.18.5 |
| recharts | 数据可视化 | ^2.15.1 |
| react-beautiful-dnd | 拖拽排序 | ^13.1.1 |
| sonner | 通知提示 | ^2.0.2 |
| tailwind-merge | Tailwind类合并 | ^3.0.2 |
- Tailwind CSS:实用工具优先的CSS框架
- Font Awesome:图标库
// 主要功能:
const { getRootProps, getInputProps } = useDropzone({
onDrop, // 处理文件拖放
accept: { // 接受的文件类型
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['.xlsx'],
'application/vnd.ms-excel': ['.xls']
}
})功能特点:
- 拖放上传界面
- 文件格式验证(.xlsx/.xls)
- 示例文件下载
核心流程:
- 选择工作表
- 数据预览
- 进度跟踪
- 高级设置
// 进度模拟
const timer = setInterval(() => {
setProgress(prev => {
const newPercent = prev.percent + 5;
if (newPercent >= 100) {
navigate('/result');
}
return { percent: newPercent, remainingTime: ... };
});
}, 300);主要功能:
- 数据统计展示
- 分隔符使用占比图表
- 处理结果预览
- 异常数据处理
- 结果导出
// 数据统计图表
<PieChart>
<Pie data={delimiterStats} dataKey="value">
{delimiterStats.map((entry, index) => (
<Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} />
))}
</Pie>
</PieChart>功能:
- 自定义分隔符规则
- 规则拖拽排序
- 配置导入/导出
- 列名识别:支持'SERIAL_NUMBER'、'serial_number'等变体
- 数据类型:必须为字符串类型
- 分隔符处理:
- 基础分隔符:逗号、分号、空格
- 范围表示:S100-S200 或 S100 to S200
- 错误处理:
- 缺少SERIAL_NUMBER列
- 非字符串类型数据
// 处理后的数据保留所有原始列
processedData.push({
...row, // 保留所有原始数据
SERIAL_NUMBER: newValue // 只更新SERIAL_NUMBER列
});- 文件上传 → localStorage保存workbook数据
- 处理过程 → 更新progress状态
- 结果展示 → 从localStorage读取处理结果
- 上传Excel文件
- 选择要处理的工作表
- (可选)调整高级设置
- 开始处理
- 查看结果并下载
- 仅处理SERIAL_NUMBER列,其他列数据保持不变
- 文件大小限制为10MB
- 支持Excel 2007及以上版本
to do list:
home page--process page(preview,decide which sheet to process)--result page(contain process data component)
Problem
- local storage can't acc ept files even it is 230 kb+, better storage solution using indexed:目前数据最大条数7500左右,520kb
- test different data, check the correctness
- test functionalites
- 数据处理速度太慢