Asp.Net Core MVC 使用Aspose.Cells从Excel获取数据

视图中的代码:

          <div class="gcs-login-panel" style="height: 200px;">
                <div class="gcs-login-container">
                    <input id="file" type="file" placeholder="请输入用户名" class="input" accept=".xlsx,.xls" />
                </div>
                <div class="gcs-login-container">
                    <span style="color:red">请选择扩展名为xlsx或者xls的文件</span>
                </div>
                <div class="gcs-login-container">
                    <input id="submit" name="submit" type="button" value="开始上传" class="btn-login" />
                </div>
            </div>

Js中的代码:

 $("#submit").on("click", function () {
        if ($("#file").val() == "" || $("#file").val() == null) {
            alert("请选择文件");
            return;
        }
        var formData = new FormData();
        var file = $("#file")[0].files[0];


        formData.append("files", file);


        $("#submit").val("正在转换...");


        //上传文件
        $.ajax({
            url: '/home/getDataFromExcel',
            type: "post",
            processData: false,
            contentType: false,
            data: formData,
            async: false,
            success: function (res) {
                res = JSON.parse(res);
                if (res.status == 0) {
                    alert("获取数据成功");
                    $("#submit").val("上传文件");
                    window.location.href = "#";
                }
                else {
                    alert("获取数据失败");
                }
            }
        });
    })

Controller中的代码:

/// <summary>
        /// 从Excel获取数据
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>  
public string GetDataFromExcel([FromForm]IFormCollection form) 
        {
            try
            {
                IFormFileCollection files = form.Files;
                using (MemoryStream memoryStream = new MemoryStream()) 
                {
                    files[0].CopyToAsync(memoryStream);
                    Workbook workBook = new Workbook(memoryStream);
                    Cells cells = workBook.Worksheets[0].Cells;


                    int maxDataRow = cells.MaxDataRow;
                    int maxDataColumn = cells.MaxDataColumn;


                    List<string> list = new List<string>();
                    for (int i = 0; i <= maxDataColumn; i++)
                    {
                        list.Add(cells[0, i].StringValue.Trim());
                    }


                    var data = "Data=[";
                    StringBuilder sb = new StringBuilder();


                    for (int i = 1; i <= maxDataRow; i++)
                    {
                        sb.Append("{");
                        for (int j = 1; j <= maxDataColumn; j++)
                        {
                            if (j != maxDataColumn)
                            {
                                sb.Append(list[j] + ":\"" + cells[i, j].StringValue.Trim() + "\",");
                            }
                            else
                            {
                                sb.Append(list[j] + ":\"" + cells[i, j].StringValue.Trim()+"\"");
                            }
                        }
                        if (i != maxDataRow)
                        {
                            sb.Append("},\r\n");
                        }
                        else
                        {
                            sb.Append("}\r\n");
                        }
                    }


                    data += sb.ToString()+"]";


                    FileInfo fileInfo = new FileInfo(_webHostEnvironment.WebRootPath + "\\static\\data\\data.js");


                    if (fileInfo.Exists)
                    {
                        fileInfo.Delete();
                    }


                    fileInfo.Create().Close();                    


                    string strFileName = Path.Combine(_webHostEnvironment.WebRootPath, "static\\data", "data.js");


                    using (FileStream fs = new FileStream(strFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
                    {
                        using (StreamWriter sw = new StreamWriter(fs))
                        {
                            sw.Write(data);
                        }
                    }
                }
               
            }
            catch (Exception ex)
            {
                return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = 1,data=ex.Message });
            }
            

            return Newtonsoft.Json.JsonConvert.SerializeObject(new { status = 0,data="生成数据成功" });
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值