在C#MVC中从内存流创建excel时忽略警告

在C#MVC中从内存流创建excel时忽略警告,c#,excel,asp.net-mvc,C#,Excel,Asp.net Mvc,我是通过将.cshtml MVC Razor页面转换为字节,然后将其转换为内存流来创建excel来创建excel文件的,但是当打开该excel文件时,我收到一条警告消息,我想忽略它,或者您可以说删除它。我该怎么做(不想使用外部库,如NPOI或EPPlus) 这是我的C代码 其中distributerListModel=Model传递给视图,我想在JSON响应中返回url 我可以创建excel文件,但它正在打开并显示结果,但显示警告错误“您试图打开的文件格式不同”,这是图像 我想忽略或删除上面的

我是通过将.cshtml MVC Razor页面转换为字节,然后将其转换为内存流来创建excel来创建excel文件的,但是当打开该excel文件时,我收到一条警告消息,我想忽略它,或者您可以说删除它。我该怎么做(不想使用外部库,如NPOI或EPPlus)

这是我的C代码

其中distributerListModel=Model传递给视图,我想在JSON响应中返回url

我可以创建excel文件,但它正在打开并显示结果,但显示警告错误“您试图打开的文件格式不同”,这是图像

我想忽略或删除上面的错误,我该怎么做?
由于表格的HTML布局非常复杂,我不想使用EPPlus,而是直接想将HTML/css代码转换为excel。

使用外部库有什么问题?这是因为您没有创建excel文件,而是创建一个扩展名为xlsx的HTML文件。你真的应该使用EPPlus或NPOI。否则,您将不得不忍受错误。@level_zebra html布局包含大量级联表,因此很难实现。所以,请思考是否有任何方法可以使用从HTML获取的内存流或bytearray来创建Excel。@VDWWD是否有任何方法可以使用EPPlus或NPOI将此字节数组或内存流转换为Excel?如果不使用外部库,将更加困难。如前所述,您将随机数据粘贴到一个文件中,将扩展名更改为xls,并希望它能够工作,因为它具有xls扩展名。
          var html = FakeController.RenderViewToString2(ControllerContext, "~/Views/Report/DistirbuterPriceListExcel.cshtml", distributerListModel, true);
        var bytes = Encoding.ASCII.GetBytes(html);


        MemoryStream ms = new MemoryStream(bytes);


        var root = Server.MapPath("~/Uploads/ReportPDFFiles/");
        var pathtosave = "../../Uploads/ReportPDFFiles/";

        var CompURL = "";
        var FileName = "";

        var pdfname = String.Format("{0}.xls", Guid.NewGuid().ToString());

        var pdfCompleteName = "Distributer-List.xls";

        var path = Path.Combine(root, pdfname);
        var path2 = Path.Combine(root, pdfCompleteName);
        path = Path.GetFullPath(path);
        path2 = Path.GetFullPath(path2);


        var fileStream2 = new FileStream(path2, FileMode.Create, FileAccess.Write);

        fileStream2.Write(bytes, 0, bytes.Length);
        fileStream2.Close();        
        CompURL = pathtosave + pdfCompleteName;
        FileName = pdfCompleteName;

        return Json(new { CompURL, FileName }, JsonRequestBehavior.AllowGet);