Tag: epplus 4

如何在EPPlus中设置“PrintTitleRows”?

在Excel Interop中,我可以设置标题行以在后续页面上重复,如下所示: _xlSheet.PageSetup.PrintTitleRows = String.Format("${0}:${0}", COLUMN_HEADING_ROW); EPPlus是如何完成的? 我试图通过input以下内容来激发智能感知: prodUsageWorksheet.PrinterSettings. …但没有“打印”(除“PrintArea”)或“标题”提供给我自己…

索引超出了数组的边界,而在C#中导出数据为excel

我有ASP.Net网站。 以下是我写入Excel的方法。 public void JsonToExcel(string jsonData, HttpResponseBase response) { try { ExcelPackage excel = new ExcelPackage(); var worksheet = excel.Workbook.Worksheets.Add("Sheet1"); //below line is throwing the error worksheet.Cells[1, 1].LoadFromCollection(jsonData, true); using (MemoryStream swObj = new MemoryStream()) { string fileName = DateTime.Now.ToLongDateString() + ".xlsx"; response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; response.AddHeader("content-disposition", "attachment; filename=" + fileName + ""); excel.SaveAs(swObj); swObj.WriteTo(response.OutputStream); return; […]

EPPlus – 在DeleteRow后移动

h3110 3v3ry0n3,特别是EPPlus团队! 我有这样的Excel模板: _______________________________ | Title 1 | Title 2 | |_______________|_______________| | %Placeholder% | %Placeholder% | |_______________|_______________| | Special cell | Special cell | |_______________|_______________| 特殊单元格 – 包含一些数据validation和数据列表的空单元格。 所以这个模板有两个目的: 以编程方式填充数据(replace%placeholder%s )或 手动填充(通过select特殊单元格中的列表) 在第二种情况下,我调用sheet.DeleteRow(1)并期望特殊的行#3成为行2(向上移动),但是这不会发生。 所以,问题是: 这是一个错误,我应该发布一个问题或有一些解决方法,强制行向上移动? 这里有一些想法。 我想,这可能是由于特殊的细胞是空的。 可能是,有一种方法可以将数据validation从第3行复制到第2行? 另外还有另一个类似的问题C#ExcelPackage(EPPlus)DeleteRow不会更改表单维度? 对于更一般的情况,似乎没有删除的行后面是空行。

EPPlus – 读取Excel表格

使用EPPlus,我想读取一个Excel表格,然后将每一列中的所有内容存储到相应的List 。 我希望它能够识别表格的标题,并根据这些内容对内容进行分类。 例如,如果我的Excel表格如下所示: Id Name Gender 1 John Male 2 Maria Female 3 Daniel Unknown 我希望数据存储在List<ExcelData>中 public class ExcelData { public string Id { get; set; } public string Name { get; set; } public string Gender { get; set; } } 这样我可以使用标题名称调出内容。 例如,当我这样做: foreach (var data in ThatList) { Console.WriteLine(data.Id + data.Name + […]

带有模板的EPPlus不能按预期工作

我目前正在使用EPPlus项目来操纵一些.xlsx文件。 基本的想法是,我必须从给定的模板创build一个新的文件。 但是,当我从模板创build新文件时,表格中的所有计算列都会混乱。 我使用的代码如下: static void Main(string[] args) { const string templatePath = "template_worksheet.xlsx"; // the path of the template const string resultPath = "result.xlsx"; // the path of our result using (var pck = new ExcelPackage(new FileInfo(resultPath), new FileInfo(templatePath))) // creating a package with the given template, and our result as the new stream […]

我如何创build一个计算EPPlus中的值的DataField?

我正在将Excel Interop数据透视表代码移植到EPPlus。 我在生成一个计算的字段值的一个关键点。 在Excel Interop中,我可以这样做: pvt.AddDataField(pvt.PivotFields("TotalQty"), "Total Packages", XlConsolidationFunction.xlSum).NumberFormat = "###,##0"; pvt.AddDataField(pvt.PivotFields("TotalPrice"), "Total Purchases", XlConsolidationFunction.xlSum).NumberFormat = "$#,##0.00"; PivotField avg = pvt.CalculatedFields().Add("Average Price", "=TotalPrice/TotalQty", true); avg.Orientation = XlPivotFieldOrientation.xlDataField; avg.NumberFormat = "$###0.00"; 用此数据透视表上的“平均价格”值显示TotalPrice除以TotalQty的值。 但是如何在EPPlus中做到这一点? 我可以像这样创build“普通的香草”数据字段: var totQtyField = pivotTable.Fields["TotalQty"]; pivotTable.DataFields.Add(totQtyField); var totPriceField = pivotTable.Fields["TotalPrice"]; pivotTable.DataFields.Add(totPriceField); …但是当谈到计算价值时,我很困惑。 我的出发点是这样一个在线的例子: pivotTable.DataFields.Add(pivotTable.Fields["AvgPrice"]).Function = OfficeOpenXml.Table.PivotTable.DataFieldFunctions.Sum(); 所以我尝试了以下,但没有一个是正确的: pivotTable.DataFields.Add(pivotTable.Fields["AvgPrice"]).Function = OfficeOpenXml.Table.PivotTable.DataFieldFunctions.Average(totPriceField, totQtyField); pivotTable.DataFields.Add(pivotTable.Fields["AvgPrice"]).Function = […]

Excel&EPPlus .NET库:高级DropDown列表validation

在Epplus中,当我们为excel文件中的一些单元格创build一个DropDown列表,然后用户把一个不是列表的一部分的值,单元格显示一条消息说:值必须匹配其中一个列出的项目。 而不是这个消息,是否有可能阻止用户把一个不属于下拉列表的一部分的值? 提前致谢,

为什么EPPlus在设置PatternType时告诉我“当patterntype没有设置时不能设置颜色”?

我有这个代码来尝试设置标题行的样式: worksheet.Cells["A32:D32"].Style.Font.Name = "Georgia"; worksheet.Cells["A32:D32"].Style.Font.Bold = true; worksheet.Cells["A32:D32"].Style.Font.Size = 16; worksheet.Cells["A32:D32"].Style.Fill.PatternType = ExcelFillStyle.Solid; worksheet.Cells["A32:D33"].Style.Fill.BackgroundColor.SetColor(Color.CornflowerBlue); 它在上面的最后一行失败,“ System.ArgumentException was unhandled。。.Message =不能设置颜色,当没有设置patterntype。Source = EPPlus。。。 真正的问题是什么? 我在做什么,我不是,对不对? 更多的上下文: worksheet.Cells["A32"].LoadFromCollection(bookDataList, true); // style header row worksheet.Cells["A32:D32"].Style.Font.Name = "Georgia"; worksheet.Cells["A32:D32"].Style.Font.Bold = true; worksheet.Cells["A32:D32"].Style.Font.Size = 16; worksheet.Cells["A32:D32"].Style.Fill.PatternType = ExcelFillStyle.Solid; worksheet.Cells["A32:D33"].Style.Fill.BackgroundColor.SetColor(Color.CornflowerBlue); // style the rest worksheet.Cells["A33:D59"].Style.Font.Name = "Candara"; worksheet.Cells["A33:D59"].Style.Fill.PatternType = ExcelFillStyle.Solid; worksheet.Cells["A33:D59"].Style.Fill.BackgroundColor.SetColor(Color.Cornsilk); 请注意,在添加“样式标题行”之前,我已经有了“其余的样式”代码,并没有遇到这个问题。 […]

我如何过滤EPPlus中的列(而不是行)?

在EPPlus中过滤特定列中的行非常简单: private ExcelWorksheet prodUsageWorksheet; . . . prodUsageWorksheet.Cells["A6:A6"].AutoFilter = true; 这允许我筛选列A中的行: 我还需要过滤某些列,比如月份列(在屏幕截图中,9月15日和10月15日,但通常是多个)。 例如,我想用EPPlus编程生成以下代码: 取消select“全部select”,select一个月的子集,然后单击“确定”button,不select折叠。 看一些传统的Excel Interop代码,似乎在那里,它是这样做的: fld = ((PivotField) pvt.PivotFields("Month")); fld.Orientation = XlPivotFieldOrientation.xlColumnField; fld.NumberFormat = "MMM yy"; 具体而言,第二个代码块(方向设置为xlColumnField )是运行sorting/filterbutton的列,在操作时,该列有条件地显示/隐藏各种列。 是否根据数字格式确定哪些列是可显示/可隐藏的? 也就是说,如果价值是“9月15日”或“10月16日”? 我不知道,但我不能看到代码中更具体地设置列过滤的限制。 无论如何,如果这是Excel Interop如何完成它的话,EPPlus中的等价物是什么?