Tag: c#

如何将Excel文件下载到用户的下载文件夹?

在C#,asp.net 4.0项目中,我使用Microsoft.Office.Interop.Excel创build了一个Excel文件。 该文件被正确创build并被放置在服务器上的文件夹中。 但是,我一直无法想出一个方法来显示文件到客户端。 有人能帮我吗? 一些背景:我正在尝试解决阻止Excel文件打开的Microsoft更改。 我们的Web应用程序使用Telerik网格,并使用ExportToExcel函数将该网格导出到Excel文件。 文件下载(进入用户的下载文件),但是当用户试图打开它,他们得到一个空白的Excel应用程序。 有解决方法,如卸载创build此问题的修补程序,closuresExcel安全选项,并单击文件属性中的解除阻止; 但是,我们的客户不想做任何这些。 所以我重写了40多个网格的出口。 我从radGrid中获取数据到数据表,并使用以下代码将其写入Excel: Microsoft.Office.Interop.Excel.Application m_objExcel = null; Microsoft.Office.Interop.Excel.Workbooks m_objBooks = null; Microsoft.Office.Interop.Excel._Workbook m_objBook = null; Microsoft.Office.Interop.Excel.Sheets m_objSheets = null; Microsoft.Office.Interop.Excel._Worksheet m_objSheet = null; object m_objOpt = System.Reflection.Missing.Value; m_objExcel = new Microsoft.Office.Interop.Excel.Application(); m_objBooks = (Microsoft.Office.Interop.Excel.Workbooks)m_objExcel.Workbooks; m_objBook = (Microsoft.Office.Interop.Excel._Workbook)(m_objBooks.Add(m_objOpt)); m_objSheets = (Microsoft.Office.Interop.Excel.Sheets)m_objBook.Worksheets; m_objSheet = (Microsoft.Office.Interop.Excel._Worksheet)(m_objSheets.get_Item(1)); int colcount = […]

导出到Excel在某些机器上失败

我们正在开发一个Web应用程序,我们的一些查询结果需要导出到Excel。 我们正在使用下面的C#代码来导出: System.Web.HttpContext ctx = System.Web.HttpContext.Current; CurrentPackingListModel.Voyage.ShipmentDataContext = ShipmentDataContext; ctx.Response.Clear(); string filename = "ApprovalForm.xls"; ctx.Response.AddHeader("content-disposition", "attachment;filename=" + filename); ctx.Response.ContentType = "application/vnd.ms-excel"; ctx.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); ctx.Response.Charset = "UTF-8"; return View("../Packing/_ExportApprovalForm", CurrentPackingListModel); 我返回结果的部分视图如下: <body id="body" onload="window.print();"> <table> <tbody> <tr> <td class="table-header" colspan="8"> <div style="width: 100%"> <div class="lleft"> @* <img id="imgLogo" src="~/Images/myLogo.png" />*@ </div> <div class="baslik">Approval Packing List […]

如何预先select要包含在数据透视表中的字段?

我有这个EPPlus代码来创build数据透视表: private void AddPivotTable() { string colAlphaRowNum = string.Format("A{0}", locationWorksheet.Dimension.End.Row+5); ExcelAddressBase eab = locationWorksheet.Cells[colAlphaRowNum]; ExcelRangeBase erb = locationWorksheet.Cells[6, 1, locationWorksheet.Dimension.End.Row, locationWorksheet.Dimension.End.Column]; var pt = locationWorksheet.PivotTables.Add(eab, erb, "Pivotous"); pt.MultipleFieldFilters = true; pt.RowGrandTotals = true; pt.ColumGrandTotals = true; pt.Compact = true; pt.CompactData = true; pt.GridDropZones = false; pt.Outline = false; pt.OutlineData = false; pt.ShowError = true; pt.ErrorCaption […]

ASP.NET:将GridView导出到Excel的正确方法,包括dynamic添加的行

我一直在试图实现一个简单的方法来导出GridViews到Excel工作表。 不过,现在我坚持了这一段时间: 我的GridView AutoGenerateColumns设置为true ,因为数据源是dynamic的,并不是真正可预测的(随着时间的推移而改变列数)。 它自动创build的HeaderRow不适合我,因此我也将ShowHeader设置为false并在OnRowCreated事件中创build自己的事件,如下所示: if (e.Row.RowType == DataControlRowType.Header) { gv.Controls[0].Controls.AddAt(0, GetHeader()); gv.Controls[0].Controls.AddAt(1, GetSubHeader()); } GetHeader()和GetSubHeader()都返回一个GridViewRow (头里有两行使用不同的colspans,rowspans和stuff)。 这一切都在网站上很好地工作,但是,当我尝试使用OpenXML导出GridView像这样: ExcelPackage excel = new ExcelPackage(); var workSheet = excel.Workbook.Worksheets.Add("List 1"); var totalCols = gv.Rows[0].Cells.Count; var totalRows = gv.Rows.Count; var headerRow = gv.HeaderRow; for (int i = 0; i < totalCols; i++) { workSheet.Cells[1,i+1].Value = headerRow.Cells[i].Text; } […]

如何将date与行匹配,然后使用EPPlus获取最终的列值?

到目前为止,我可以从电子表格中轻松获取数据,只是获取参考号码行,但是我目前不知道如何在获取正确的数据之前将行匹配到数据部分。 我目前不得不从下面的Excel电子表格中提取一些数据: Start date Ref number 29/07/2015 2342326 01/07/2016 5697455 02/08/2016 3453787 02/08/2016 5345355 02/08/2015 8364456 03/08/2016 1479789 04/07/2015 9334578 主要的问题是,是否可以从设定的date读取数据,从行中获取参考号码,例如开始date。 例如,如果我只是想从date设置的数据上个月1日以上。 这将如何最好地实施。 使用基本的OleDb获取列的当前代码示例: using System; using System.Data.OleDb; using System.Text.RegularExpressions; namespace Number_Cleaner { public class NumberCleanerReport { public void runExcel_Report() { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("[*][START OF: NumberExt.xls, Number Extraction]"); Console.ResetColor(); string con = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NumberExt.xls;" […]

如何使用PowerShell排除Excel列中的第一行

我想整理一列(这是一个目标date,我想按最早的datesorting)。 问题是,第一行是一个文本(列的名称),所以当我按列F(目标date)sorting出来,文本行进入Excel文档的最后。 我希望这个列名留在每个列的顶部。 我想要整理列 这里是代码: $objRange = $worksheet.UsedRange $objRange2 = $Excel.Range("F2") [void]$objRange.Sort($objRange2.Range("F2")) 我不知道如何排除这第一行sorting。

外部表格与Excel 2007不在预期的格式OLEDB 12.0中

我开发了一个WEB API服务,当用户上传时,将从excel文件中读取数据。 我使用OLEDB如下: if (Path.GetExtension(filePath).ToUpper() == ".XLS") { oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;\""); } else { oledbConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"); } oledbConn.Open(); //Exception thrown at here OleDbCommand cmd = new OleDbCommand(); OleDbDataAdapter oleda = new OleDbDataAdapter(); DataSet ds = new DataSet(); […]

如何使用get_range方法为特定行和特定范围的列着色Excel表

我试图使用下面的C#代码颜色现有的Excel文件…我能够着色一个列的单元格的范围,但我需要为该列范围的特定行着色。 这怎么能实现? 例如:我需要为第二行的列范围(“AW:AW”,“AY:AY”) excelWorkSheet5.get_Range("AW:AW", "AY:AY").Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);

Microsoft Open XML使用SAX方法逐行读取Excel文件并查找单元格数据

我已经在stockoverflow看了几个post,但我没有find我正在寻找的东西,而我发现这些东西closures似乎并没有为我工作。 使用OpenXmlReader不会读取行,因为它似乎永远不会打开表单数据的行元素types永远找不到。 我需要使用使用OpenXmlPartReader的SAX方法。 我要做的是打开Excel文档并逐行阅读。 对于每一行,我需要通过索引号或id和该单元格中的值来获取几个单元格。 所以我不需要遍历每一个我知道我需要哪个单元的单元。 我想要使​​用SAX方法来避免内存不足,因为我预计需要读取大文件。

从date范围中剥离EPPlus输出中的数据

快速浏览:主要目标是从行中读取设定date的数据,并从设定的date(例如开始date)获取参考编号。 例如,如果我只是想从date设置的数据上个月1日以上。 我目前不得不从下面的Excel电子表格中提取一些数据: Start date Ref number 29/07/2015 2342326 01/07/2016 5697455 02/08/2016 3453787 02/08/2016 5345355 02/08/2015 8364456 03/08/2016 1479789 04/07/2015 9334578 使用EPPlus输出: 29/07/2015 2342326 29/07/2016 5697455 02/08/2016 3453787 02/08/2016 5345355 02/08/2015 8364456 03/08/2016 1479789 04/07/2015 9334578 这部分是好的,但是当我尝试通过date范围去除输出我得到错误,例如使用LINQ我得到以下错误输出。 An unhandled exception of type 'System.InvalidCastException' occurred in System.Data.DataSetExtensions.dll Additional information: Specified cast is not valid. LINQ代码: var […]