使用CSV工具读取用户上传的文本和输出文本

该文章描述了一个前端使用HTML和JavaScript实现CSV文件上传功能,点击按钮触发文件选择,然后通过AJAX发送到后端。后端接收到文件后进行解析,验证数据并将其存储到数据库中。同时,文章还展示了后端如何处理CSV数据,包括检查文件格式、解析行和列、以及数据校验和批量插入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、读取用户上传的csv文件并且保存到db

  • 前端代码
<div>
    // 改变原有输入框的样式
    <button onclick="import()" class="btn btn-sm btn-danger pull-right">
        <i class="fa fa-upload"></i>
        import
    </button>
    // 将原有的输入框隐藏
    <input type="file" style="display:none" id="upload" onchange="upload(this)">
</div>
function import() {
        $('#upload').click()
    }

    function upload(file) {
        let temp = file.files[0];
        let formData = new FormData();
        formData.append('file',temp);
        $.ajax({
            url: '${fileUploadUrl}',
            type: 'post',
            data: formData,
            processData: false,
            contentType: false,
            success: function (response) {
                if(response.code == 'SUCC' ){
                    if (response.data.length > 0){
                        new PNotify({
                            text: 'upload file success !! \n'+ response.data,
                            type: 'error',
                            styling: 'bootstrap3'
                        });
                    }else {
                        new PNotify({
                            text: 'upload file success !! ' ,
                            type: 'success',
                            styling: 'bootstrap3'
                        });
                    }

                }else {
                    new PNotify({
                        text: 'upload file error !! \n' + response.data,
                        type: 'error',
                        styling: 'bootstrap3'
                    });
                }

            }
        })
        $('#upload').prop("value","");
    }
  • 后端代码
// csv工具
package com.hkt.adminportal.utils;

import java.util.ArrayList;
import java.util.List;

import com.hkt.adminportal.entity.CSVExportable;

public class CSVUtils {

	private static final char DEFAULT_SEPARATOR = ',';
    private static final char DEFAULT_QUOTE = '"';
    private static final char SLASH_CHAR = '/';
	
	public static String createCsvFromList(List<? extends CSVExportable> list) {
		if (list != null && list.size() > 0) {
			StringBuilder builder = new StringBuilder();
			builder.append(list.get(0).toCVSHeader() + "\n");
			for (CSVExportable csv : list) {
				builder.append(csv.toCSVRow() + "\n");
			}
			return builder.toString();
		} else {
			return "";
		}

	}
	
	public static List<String> parseLine(String cvsLine) {
        return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE);
    }

    public static List<String> parseLine(String cvsLine, char separators) {
        return parseLine(cvsLine, separators, DEFAULT_QUOTE);
    }

    public static List<String> parseLine(String cvsLine, char separators, char customQuote) {

        List<String> result = new ArrayLi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值