我正在使用 .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 中获取数据,但没有将其传递给浏览器
您可以通过将 href 值设置为控制器,使用 html 标签在单击时将其传递
或者您可以在内存中创建一个 Blob 并用控制器响应的值填充它,然后创建一个元素并将该值设置为您的 Blob 并触发对该元素的单击
你可以看一个例子 如何将 JavaScript 数组信息导出到 csv(在客户端)?