ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

.net c#文件下载

2021-09-10 18:02:29  阅读:188  来源: 互联网

标签:c# NPOI SS sheet1 file new UserModel net 下载


一、指定服务器地址文件下载

/// <summary>
/// 下载附件 url:  http://iphoto.hucai.com/Uploads/FJFile/001448210703/2021年06月16日T22时45分30秒_remark.csv
/// </summary>
/// <param name="file_url"></param>
/// <returns></returns>
[HttpGet]
[ApiIgnore]
public FileResult DownLoadFile([Required][Url] string file_url)
{
Stream stream = null;
using (HttpClient client = new HttpClient())
{
//资源下载
var uri = new Uri(file_url);
client.BaseAddress = uri;
stream = client.GetStreamAsync(uri).GetAwaiter().GetResult();
}
return File(stream, "application/octet-stream");
}

二、当前服务器地址并转化为文件流

/// <summary>
/// 下载附件(当前服务器地址并转化为文件流)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public HttpResponseMessage DownLoadFile(OriginOrderManaApiModel.DownloadFileReq request)
{
ApiResult<object> apires = new ApiResult<object>() { code = 1 };
//string Directory = System.AppDomain.CurrentDomain.BaseDirectory;
string file_path = "/Uploads/FJFile/" + request.origin_order_num;
string file_url = HostingEnvironment.MapPath(file_path) + "\\" + request.file_name;

//var FilePath = Directory + "Uploads\\FJFile\\" + origin_order_num + "\\" + file_name;
var stream = new FileStream(file_url, FileMode.Open);
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/html");
response.Content.Headers.ContentType.CharSet = "utf-8";
//response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
//{
// FileName = file_name
//};
return response;
}

三、xcel转化为文件流下载

//excel转化为文件流下载

public static System.IO.MemoryStream ExcelExport(DataTable dt)
{
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
//设置标题样式
NPOI.SS.UserModel.ICellStyle style = book.CreateCellStyle();
NPOI.SS.UserModel.IFont font = book.CreateFont();
font.Boldweight = short.MaxValue; //字体加粗
font.FontHeightInPoints = 10; //字体大小
style.SetFont(font);
style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;

//设置正文样式
NPOI.SS.UserModel.ICellStyle style1 = book.CreateCellStyle();
style1.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;

//添加一个sheet  
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");

//给sheet1添加第一行的头部标题
NPOI.SS.UserModel.IRow row = sheet1.CreateRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
row.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
//添加列表样式
row.GetCell(i).CellStyle = style;
}
//将数据逐步写入sheet1各个行
for (int i = 0; i < dt.Rows.Count; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
rowtemp.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString().Trim());
rowtemp.GetCell(j).CellStyle = style1;
}
}

//列宽自适应,只对英文和数字有效
for (int i = 0; i <= dt.Rows.Count; i++)
{
sheet1.AutoSizeColumn(i);
}
//获取当前列的宽度,然后对比本列的长度,取最大值
for (int columnNum = 0; columnNum <= dt.Columns.Count; columnNum++)
{
int columnWidth = sheet1.GetColumnWidth(columnNum) / 256; //获取当前列宽度
for (int rowNum = 1; rowNum <= sheet1.LastRowNum; rowNum++)
{
NPOI.SS.UserModel.IRow currentRow;
//当前行未被使用过
if (sheet1.GetRow(rowNum) == null)
{
currentRow = sheet1.CreateRow(rowNum);
}
else
{
currentRow = sheet1.GetRow(rowNum);
}
if (currentRow.GetCell(columnNum) != null)
{
NPOI.SS.UserModel.ICell currentCell = currentRow.GetCell(columnNum);
int length = System.Text.Encoding.Default.GetBytes(currentCell.ToString()).Length; //获取当前单元格的内容宽度
if (columnWidth < length)
{
columnWidth = length;
}
}
}
sheet1.SetColumnWidth(columnNum, (columnWidth + 3) * 256);
}
//导出后下载Excel
byte[] datas = null;
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
ms.Flush();
ms.Position = 0;
datas = ms.GetBuffer();

return ms;
//return File(datas, "application/vnd.ms-excel", action + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
}
四、前端根据Url直接下载

function DownLoadFJ() {
$.ajax({
url: "/OfficeManagment/GetFileInfo",
type: "POST",
async: true,
dataType: "json",
data: { origin_order_num: '@ViewBag.OriginOrderNum'},
success: function (data) {
$('#dlFJQueueTbl').append('<tr><td style="width: 320px;">附件地址</td><td style="width: 95px;">创建时间</td><td style="width: 95px;">操作</td></tr>');
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
var file_url = data[i].file_url
var create_date = data[i].create_date;
$('#dlFJQueueTbl').append('<tr class="dlFJQueueTr"><td>' + file_url + '</td><td class="time">' + create_date + '</td><td class="dlFJQueueBtn"><a class="text-primary" href="' + file_url + '" class="btnDown" role="button">点击下载</a></td></tr>');
}
}
$('#myFile').modal('show');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('err!');
}
});
}

标签:c#,NPOI,SS,sheet1,file,new,UserModel,net,下载
来源: https://www.cnblogs.com/huodige/p/15252335.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有