Tag: 模型视图控制器

MVC 5如何上传Excel文件并使用EPPlus(OfficeOpenXml)直到上一个填充的数据行读取行ExcelPackage

我有一个MVCfile upload的解决scheme,上传一个Excel文件,我有一个Excel包的问题,​​它使用Dimension.End.Row属性读取我的Excel文档行到文件末尾,我想直到阅读最后一个填充行,而不是整个电子表格行,因为它popup我的代码与空引用错误,Excel是从外部来源,它是一个约7000行的locking文件,但只有大约3000行填充数据, Dimension.End.Row属性读取整个7000行,因此当我循环并映射行和列时,最后填充的数据行3001的数据行上有空值。 我怎样才能使这只读取在Excel文件中填充行,就像我说我不能修改这个文件为locking和只读,我只能读取它并上传它。 请参阅下面的代码。 [HttpPost] public ActionResult Upload(FormCollection formCollection) { if (Request != null) { HttpPostedFileBase file = Request.Files["UploadedFile"]; if ((file != null && file.ContentLength > 0 && !string.IsNullOrEmpty(file.FileName))) { string fileName = file.FileName; string fileContentType = file.ContentType; byte[] filebytes = new byte[file.ContentLength]; var data = file.InputStream.Read(filebytes, 0, Convert.ToInt32(file.ContentLength)); var suppleirList = new List<CleanSupplierClaim>(); […]

下载到使用MVC的Excel不能在服务器上工作

我需要在MVC中提供下载选项,因为我已经返回了一个函数,它生成了excel并在本地下载了,但是在服务器中redirect后生成了excel文件。 我的代码 查看 <a href="/Report/StockOnHandToExcel" style="font-weight: bold" >Export To Excel</a> 调节器 public void StockOnHandToExcel() { try { var dt = DataTableClass.ToDataTable(_report.StockOnHandExcelList()); var stream = ExcelUtility.GetExcel(dt); var filename = "StockOnHand.xlsx"; var contenttype = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.Clear(); Response.ContentType = contenttype; Response.AddHeader("content-disposition", "attachment;filename=" + filename); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.BinaryWrite(stream.ToArray()); Response.End(); } catch (Exception ex) { ErrorHandlerClass.LogMessage(ex.Message + ex.StackTrace); } } 提前致谢

在MVC应用程序中将数据导出到Excel

我正在寻找在我的MVC应用程序导出数据到Excel的各种方法。 很多库需要将数据存储在DataTable中。 我有我的数据传递到模型从视图访问。 看来你不能把这个模型传回给控制器。 JavaScript是一个选项,如果它不是作为html表格导出的,而是一个纯粹的Excel文件。 目前,我调用一个函数,将再次运行查询来build立一个string,并使用System.IO.File.WriteAllText将输出该文件。 我不喜欢这种方式,因为我不得不调用数据库来再次运行查询(我已经在视图模型中有我需要的所有数据),path是硬编码的,我想要一个保存对话框popup向上。 有没有更好的方法来做到这一点? 我真的很喜欢以下两种方法之一: find一个“把戏”从视图传回控制器的数据,也许TempData可以在视图中使用? JavaScript将产生一个纯粹的Excel(.xlsx)文件 List<type> record = GetRecords(); StringBuilder sb = new StringBuilder(); sb.AppendLine("Data 1, Data 2, Data 3, Data 4"); foreach (var item in record) { sb.AppendFormat("{0},{1},{2},{3},{4}\n", item.1, item.2, item.3, item.4); } System.IO.File.WriteAllText("myfile.csv", sb.ToString());

Safari添加.html使用epplus jquery.fileDownload.js下载xlsx

我正在使用MVC c#代码生成一个excel文件,然后下载,我使用EPPLUS,一切工作正常,除了在Mac上的Safari浏览器,当我尝试创build文件时,它是下载,最后添加.html例如,file.xlsx.html我不知道如何解决这个问题。 $.fileDownload(url, { httpMethod: 'POST', data: dtColumns, successCallback: function() { //code }, failCallback: function() { //code } }); 公共streamExportDataset(IEnumerable数据集,IList columnsToExport,string模板){/ /分组工作的匿名types,所以我们可以分组导出到自己的表var groupings = dataset.GroupBy(i => i.GetType()); using (var package = new ExcelPackage(new FileInfo(GetTemplateFilePath(template)), true)) { var ws = package.Workbook.Worksheets[1]; if (groupings.Any()) { // add each "anon type matched grouping" foreach (var grouping in groupings) […]

导出到Excel,同时使用Gridview和LINQ保持开始零

当我将我的模型导出到excel时,我似乎失去了开始的零。 我的数据库中的某些值的值为“0345”或“0001”。 当我将它们导出为ex​​cel时,excel表格显示“345”或“1”。 我如何保持领先的零? 我的应用程序使用MVC 5,并使用LINQ语句db.lookup_client_name.ToList(); 我已阅读其他文章,其中指出,在开始时将值设置为具有' (单引号) '的string,或者在string之前添加\t 。 我如何通过LINQ语句来实现这一点? 我的代码在下面… public ActionResult ExportToExcel(string Value) { var gv = new GridView(); gv.DataSource = db.lookup_client_name.ToList(); gv.DataBind(); Response.ClearContent(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment; filename=LookupClientName_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + ".xls"); Response.ContentType = "application/ms-excel"; Response.Charset = ""; StringWriter objStringWriter = new StringWriter(); HtmlTextWriter objHtmlTextWriter = new HtmlTextWriter(objStringWriter); gv.RenderControl(objHtmlTextWriter); […]

将variables二传递给控制器

这是我的控制器代码: public function search_records() { if($this->session->userdata('logged_in')) { $data = array ( 'employeeName' => $this->input->post('employeeName'), 'userID' => $this->input->post('userID'), 'date' => $this->input->post('date'), 'timeSelect' => $this->input->post('timeSelect'), 'error_message' => 'Sorry there is no record !' ); if($data['employeeName'] !== '' OR $data['userID'] !== '') { if(isset($data['date'])) { if($data['timeSelect'] == 1) { $data['time1'] = '00:00:00'; $data['time2'] = '23:59:00'; $result_from_db= $this->mrecord->search_by_id_or_name_with_date($data); if($result_from_db […]

导出excel显示iPhone中的非识别字符

我有这个代码转换数据 using (XLWorkbook wb = new XLWorkbook()) { wb.Worksheets.Add(dt); wb.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; wb.Style.Font.Bold = true; //string strpath = Server.MapPath("~/SavedFolder/hello.xlsx"); //wb.SaveAs(strpath); HttpContext.Response.Clear(); HttpContext.Response.Buffer = true; HttpContext.Response.Charset = ""; HttpContext.Response.ContentType = "application/vnd.ms-excel"; //HttpContext.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; HttpContext.Response.AddHeader("Content-Disposition", "attachment;filename= ResultReport.xls"); using (MemoryStream MyMemoryStream = new MemoryStream()) { wb.SaveAs(MyMemoryStream); MyMemoryStream.WriteTo(HttpContext.Response.OutputStream); HttpContext.Response.Flush(); HttpContext.Response.End(); } 在PC上运行良好,但在iPhone或iPad上显示错误无法阅读。 所以我做了什么,把内容types转换成CSV格式,然后excel打开,但显示的数据不是英文的胡言乱语。 我试图打开Excel使用免费的应用程序为iPhone打开文件相同的结果可以有人帮助。

使用angularjs在MVC中上传Excel文件。 HttpPostedFileBase是空的

我正在尝试使用angular度js在mvc上传一个excel文件。 以下是我的观点代码: <div class="browsebtn" ng-controller = "serviceablectrlr"><input type="file" id="dataFile" name="uploadFile" data-max-size="2097152" accept=".xls, .xlsx" onclick="$('#fileError').hide();" /> </div> <input id="btnUploadExcel" type="button" value="Upload" ng-click="UploadConfirmation()" class="btn btn-yellow" /> 以下是我的控制器代码: var app = angular.module('ProductCatalog'); app.controller('serviceablectrlr', function ($scope, $http) { var apiURL = $("#ProductCatalogApiUrl").val(); var ClearFile = function () { $("#dataFile").val(''); } // pass file object and url to this method […]

用同一本书中的两张表创buildexcel文件 – C#

在我的应用程序中,我有一个方法返回一个Excel表格的Excel文件。 它工作正常,但现在我需要创build另一个表,并添加它,我不知道如何。 这是我的代码: StringBuilder sb = new StringBuilder(); string sFileName = "lottery" + Sorteio.Data.Date.ToShortDateString() + ".xls"; sb.Append("<x:ExcelWorkBook>"); sb.Append("<x:ExcelWorkSheet>"); sb.Append("<table style='1px solid black; font-size:12px;'>"); //many sb.Append(…) with data sb.Append("</table>"); sb.Append("</x:ExcelWorkSheet>"); sb.Append("<x:ExcelWorkSheet>"); sb.Append("<table style='1px solid black; font-size:12px;'>"); //many sb.Append(…) with data sb.Append("</table>"); sb.Append("</x:ExcelWorkSheet>"); sb.Append("</x:ExcelWorkBook>"); HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + sFileName); this.Response.ContentType = "application/vnd.ms-excel"; this.Response.ContentEncoding = System.Text.Encoding.Default; System.IO.StringWriter sw […]

在服务器上创buildExcel文件后,如何自动删除Excel文件并将其返回给用户?

我正在Web服务器上创build一个Excel文件,使用OleDb连接物理文件(以及物理文件)和追加logging。 然后,我通过MVC向用户返回一个FilePathResult ,并希望由于对所附logging的数据保护问题而删除物理文件。 我曾尝试在Finally子句中使用File.Delete ,但是我得到一个File Not Found错误,这意味着当MVC尝试将文件发送给用户时文件已经消失。 我想创build文件作为一个MemoryStream,但我认为OleDb需要一个物理文件连接,所以这不是一个选项。 任何build议如何删除文件后,在一个操作中返回? 编辑 按要求,这是我工作,但我不知道它是如何帮助:) Public Function ExportAllOutputs() As FilePathResult ' Create Export File Name Dim ExportFilename As String = Replace(Me.Name, " ", "_") & "_Outputs.xls" Try ' Create Export File CreateExportFile(ExportFilename) ' Populate Export File For Each OutputType As OutputTypeEnum In [Enum].GetValues(GetType(OutputTypeEnum)) ExportHelper.AppendOutputs(ExportFilepath & ExportFilename, Me.GetOutputs(OutputType), Me.ProgrammeID) Next […]