public HttpResponseMessage Export(CashflowSheetExportRequest request) { ExcelExportor exportor = new ExcelExportor(new CashflowExportHandler()); Dictionary <string, string> filter = request.filter; var lst = service.ListSheet(filter); var dt = EntityConvertor <CashflowSheetItem> .ToDataTable(lst); MemoryStream ms = new MemoryStream(); exportor.Export(ms, dt, ".xls"); string relativePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; string sPath = Path.Combine(Path.GetFullPath(relativePath), "Cache"); if (!Directory.Exists(sPath)) { Directory.CreateDirectory(sPath); } string fileName = SerialNoService.GetUUID() + ".xls"; string filePath = Path.Combine(sPath, fileName); using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); } ms.Close(); ms.Dispose(); var stream = new FileStream(filePath, FileMode.Open); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(stream); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName }; //System.IO.File.Delete(filePath); return(response); }
private void btn_Click(object sender, RoutedEventArgs e) { try { var txt = (sender as Button).Name; switch (txt) { case "query": var frmFilter = new FormListFilterPopup(); frmFilter.Filter = m_filter; frmFilter.FilterPopupEvent += (args) => { m_filter = args.Filter; SheetModel = SheetModel; }; frmFilter.Show(); break; case "refresh": SheetModel = SheetModel; break; case "formula": if (SheetModel == SheetModel.FORMULA) { SheetModel = SheetModel.DATA; } else { SheetModel = SheetModel.FORMULA; } break; case "exportformula": SaveFileDialog sflg = new SaveFileDialog(); sflg.Filter = "Excel(*.xls)|*.xls|Excel(*.xlsx)|*.xlsx"; sflg.FileName = "资产负债表"; var bRnt = sflg.ShowDialog(); if (bRnt == null || bRnt == false) { return; } ExcelExportor exportor = new ExcelExportor(new BalanceSheetExportHandler()); var dt = EntityConvertor <ExcelTemplateItem> .ToDataTable(m_lstTemplate); MemoryStream ms = new MemoryStream(); string flg = FileHelper.FileSuffix(sflg.FileName); exportor.Export(ms, dt, flg); using (FileStream fs = new FileStream(sflg.FileName, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); } ms.Close(); ms.Dispose(); FileHelper.ExplorePath(sflg.FileName.Substring(0, sflg.FileName.LastIndexOf("\\"))); break; case "importformula": OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Excel(*.xls)|*.xls|Excel(*.xlsx)|*.xlsx"; ofd.Title = "选择文件"; ofd.RestoreDirectory = true; if (ofd.ShowDialog() == true) { DataFactory.Instance.GetTemplateExecuter().UploadTemplate("BalanceSheet", ofd.FileName); FinanceMessageBox.Info("导入成功"); } break; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); FinanceMessageBox.Error(ex.Message); } }