webapi 导入CSV文件

本文详细介绍了一个使用HTML、JavaScript和C#实现的文件上传与数据导入功能的完整案例。通过Ajax进行异步文件上传,利用FormData处理文件数据,再通过后端C#代码解析并导入CSV文件中的数据到数据库,展示了从前端交互到后端处理的全过程。

/// Html 代码

<button type="button" class="btn btn-primary" onclick="InportTicket()">导入</button>
<input id="fileToUpload" type="file" name="upfile" style="display:none;">

/// JS脚本

$("#fileToUpload").click();

$("#fileToUpload").change(function () {
  var formData = new FormData();
  formData.append("myfile", document.getElementById("fileToUpload").files[0]);

  $.ajax({
    url: "../Ticket/TicketFileToUpload",
    type: 'POST',
    cache: false,
    processData: false,
    contentType: false,
    data: formData,
    success: function (res) {
      alert(res.Message);
    },
    error: function (data, status, e) {
      alert("操作失败!");
    }
  })
});

/// Action 代码

[HttpPost]
public ActionResult TicketFileToUpload()
{
  try
  {
    if (Request.Files.Count > 0)
    {
      HttpPostedFileBase TicketFile = Request.Files[0];
      List<string[]> lstData = Helper.ImportExport.InportData(TicketFile.InputStream);
      TicketModel ticketope = new TicketModel();

      for (int i = 1; i < lstData.Count; i++)
      {
        string[] itemData = lstData[i];
        Ticket entity = ticketope.GetByCode(itemData[0]);
        if (entity == null)
        {
          entity = new Ticket();
          entity.Label = itemData[1];
          entity.SiteId = int.Parse(itemData[2]);
          entity.Owner = itemData[4];
          entity.CardId = itemData[5];
          entity.StartDate = DateTime.Parse(itemData[6]);
          entity.EndDate = DateTime.Parse(itemData[7]);
          entity.IsValid = bool.Parse(itemData[8]);
          entity.IsUsed = bool.Parse(itemData[9]);
          ticketope.Insert(entity);
        }
      }
      return Json(new JsonResultData() { Success = true, Message = "导入数据成功!" });
    }
    else
    {
      return Json(new JsonResultData() { Success = false, Message = "找不到导入文件数据!" });
    }
  }
  catch (Exception ex)
  {
    return Json(new JsonResultData() { Success = false, Message = "导入数据失败!" });
  }
}

public static List<string[]> InportData(Stream filestream)
{
  lock (RunningInport)
  {
    List<string[]> lstData = new List<string[]>();
    string strLine = "";
    bool IsFirst = true;

    StreamReader sr = new StreamReader(filestream, Encoding.UTF8);
    while ((strLine = sr.ReadLine()) != null)
    {
      if (IsFirst)
      {
        string[] strTitles = strLine.Split(',');
        lstData.Add(strTitles);
      }
      else
      {
        string[] strData = strLine.Split(',');
        lstData.Add(strData);
      }
    }
    return lstData;
  }
}

转载于:https://www.cnblogs.com/wangye520/p/10244385.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值