无法在 .NET Core 应用程序上导出文件

问题描述 投票:0回答:1

我正在使用 .NET Core 应用程序。 我可以在视图上看到数据,但如果我尝试导出此数据(在 Excel 中(使用 closeXML)或 csv 文件),它不起作用。检查devTools没有问题。

这是控制器,在 devTools 的响应部分我可以看到数据:

public IActionResult ExportExcel ( DateTime fechaDesde ) 
{
    var builder = new StringBuilder();
    DataTable dt = _conteoFirmasRepository.GetListDT( fechaDesde ); // get data in datatable
    builder.AppendLine( "firmasConsumidas,Flujo,Contacto" );

    foreach ( DataRow item in dt.Rows ) { 
        builder.AppendLine( $"{item["firmasConsumidas"].ToString()},{item["Flujo"].ToString()}, {item["Contacto"].ToString()}");
    }

    return File(Encoding.UTF8.GetBytes( builder.ToString() ), "text/csv", "signatures.csv"); // Problem: NOT returns the file
}

这是视图,用于显示表格正常工作的按钮:

@{
    ViewData["Title"] = "Home Page";
}

<div class="row justify-content-center" >
  <div class="alert alert-primary" role="alert" >
      VidSigner Counter
  </div>

  <div class="container justify-content-center" >        
        <div class="mb-3">
            <label for="txtFechaDesde" class="form-label">Start Date</label>
            <input type="date" class="form-control" id="txtFechaDesde" aria-describedby="emailHelp">
            <div id="FechaDesHelp" class="form-text">Set Start Date</div>
        </div>
        <div>
            <button type="button" class="btn btn-primary boton-consulta-totales">Consultar</button>
        </div>
        <div>
            <button type="button" class="btn btn-success boton-exporta-totales">Exportar</button>
        </div>        
    </div>

    <table class="table table-stripped table-hover" id="tablaFirmas" >
        <thead>
            <tr>
                <th>Firmas Consumidas</th>
                <th>Flujo</th>
                <th>Contacto</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
</div>

视图有一个js部分:

@section Scripts {
    <script src="~/js/conteofirmas.js"></script>
}

这是我的 js 部分:

fetch(`/Home/ExportExcel?fechaDesde=${modelo.fechaDesde}`) // call the action
  .then(response => {
      return response.ok ? console.log("Ok") : Promise.reject(response)
  }) // on console I have the "Ok"       
}

调用操作的按钮:

$(document).on("click", ".boton-exporta-totales", function () { 
    ExportarExcel()
})

还有另一个 js 函数用于调用表上的数据,但这可以正常工作。 对错误有什么想法吗? 我希望你能帮助我。 非常感谢。

javascript asp.net excel asp.net-core datatable
1个回答
0
投票

您正在 JavaScript 中获取数据,但没有将其传递给浏览器

您可以通过将 href 值设置为控制器,使用 html 标签在单击时将其传递

或者您可以在内存中创建一个 Blob 并用控制器响应的值填充它,然后创建一个元素并将该值设置为您的 Blob 并触发对该元素的单击

你可以看一个例子 如何将 JavaScript 数组信息导出到 csv(在客户端)?

© www.soinside.com 2019 - 2024. All rights reserved.