原本代碼已經寫好了,傳遞給前臺文件路徑就能夠,後來同事告訴我,給路徑可能下載不了,文件可能放在另外一臺服務器,告訴我說用流進行下載,而後就開始百度加上找如今公司的代碼,作出來了,感受怪怪的。數組
//判斷路徑是否存在,不存在則建立服務器
var basePath = Path.Combine(ProjectConfig.BaseFolder));app
if(!File.Exists(basePath )){System.IO.Directory.CreateDirectory(basePath);}指針
//待讀取文件路徑對象
string filePath = Path.Combine(basePath,"xxx.xls");ci
//獲取HSSFWorkbook對象字符串
HSSFWorkbook workbook = (HSSFWorkbook)OpenWorkbook(filePath);string
//操做sheetit
ISheet sheet = workbook.GetSheetAt(0);io
//設置生成下拉框的行和列;綁定下拉框和做用區域
sheet.AddValidationData(new HSSFDataValidation(new CellRangeAddressList(4, 30, 0, 0),
DVConstraint.CreateExplicitListConstraint(字符串類型數組)));
//設置標題
ICell titleRow = sheet.GetRow(0).GetCell(0);
titleRow.SetCellValue(titleRow.StringCellValue.Replace("x", year));
//導出Excel
FileStream stream = new FileStream(filePath, FileMode.Create, System.IO.FileAccess.ReadWrite);
workbook.Write(stream);//設置模板寫入流中用於導出
//流轉換成二進制數組
BinaryReader r = new BinaryReader(stream);
r.BaseStream.Seek(0, SeekOrigin.Begin);//將文件指針設置到文件開
byte[] pReadByte = r.ReadBytes((int)r.BaseStream.Length);
//關閉流
stream.Close();
stream.Dispose();
//返回待下載文件
Stream stream = new MemoryStream(buffer);
stream.Seek(0, SeekOrigin.Begin);//設置stream的position爲流的開始
return stream;
//Controller代碼
public HttpResponseMessage xxx() { HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); var res = _aviationProtectionService.xxx();//返回的流 result.Content = new StreamContent(res); result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); result.Content.Headers.ContentDisposition.FileName = "xxx.xls"; return result; }