Tag: epplus

如何使用c#将.xls文件转换为.xlsx,然后编辑.xlsx文件,如使用epplus对单元格着色

我编写了将.xls转换为.xlsx的程序,该程序更改了扩展名,但epplus函数不能处理转换后的文件。 下面是将.xls转换为.xlsx并为.xlsx文件的单元格着色的代码,程序运行时没有任何错误或exception,但是运行程序后,excel没有被颜色编辑 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Drawing; using OfficeOpenXml; using OfficeOpenXml.Style; namespace Project42 { class Class1 { static void Main(string[] args) { Console.WriteLine("File Extension Conversion From .xls to .xlsx"); try { string filePath = @"C:\Users\mvmurthy\Desktop\abc.xls"; if (filePath.EndsWith(".xls")) { File.Move(filePath, Path.ChangeExtension(filePath, ".xlsx")); Console.WriteLine("File Extension Updated To .xlsx"); […]

我怎样才能得到“总计”的平均值而不是总和?

我得到(免费)在我的数据透视表中的“总计”列: 对于“TotalQty”和“TotalPrice”这是很好的,但对于“AvgPrice”和“PrcntgOfTotal”不是那么多。 我怎样才能得到这些vals在第一种情况下,而不是一个平均值? 月份百分比是该月总和的百分比(不是所有月份的总和); 所以GrandTotal.PrcntgOfTotal也不应该是每月价值的平均值。 下面是我生成这个数据透视表的代码: private void PopulatePivotTableSheet() { string NORTHWEST_CORNER_OF_PIVOT_TABLE = "A6"; AddPrePivotTableDataToPivotTableSheet(); var dataRange = rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Address]; dataRange.AutoFitColumns(); var pivotTable = pivotTableWorksheet.PivotTables.Add( pivotTableWorksheet.Cells[NORTHWEST_CORNER_OF_PIVOT_TABLE], dataRange, "PivotTable"); pivotTable.MultipleFieldFilters = true; //pivotTable.RowGrandTotals = true; <= default setting //pivotTable.ColumGrandTotals = true; <= default setting //pivotTable.RowGrandTotals = false; // this prevents the "Grand Total" column //pivotTable.ColumGrandTotals = false; […]

CSV与EPPlusparsing问题

我正在使用EPPlus来读取数据。 该数据由.xlsx或.csv 。 当文件是.csv文件时,我使用LoadFromTextfunction。 但EPPlus决定它也必须parsing所有的值, 而不应该这样做 。 例如: Id;Double; 1;-3,88; ExcelTextFormat format = new ExcelTextFormat(); format.Delimiter = ';'; worksheet.Cells[1, 1].LoadFromText( "file", format ); 结果是工作表中的-3,88值变为: -388 。 我发现这是因为EPPlus将-3,88视为一个数字,并将其parsing为默认文化InvariantCulture ,在这种情况下(类似于) us-US 。 我如何实现EPPlus加载csv而不parsing? (将所有值作为string)

与EPPlus在工作表中交替的行列标题

我正试图从一个自定义结构打印输出到Excel文件。 我想要做的是: COLUMN NAME PLAYER PLAYER COLUMN NAME PLAYER PLAYER 但是我得到的是 COLUMN NAME COLUMN NAME PLAYER PLAYER 码: int i = 1; foreach (var item in scoresheet.Positions) { var column = wb.Cells; if ((i % 5) == 1) { column["A" + i].LoadFromText("Initial Rank"); } else { column["A" + i + 1].LoadFromText(item.Player.FirstName); } i++; }

使用EPPlus更改订单yAxys

我正在做一个epplus的excel,需要在垂直条中生成两个graphics,如下图所示: 如您所见,在Y轴上,标签出现无序,从P6开始到P1结束。 我想得到相反的效果。 从P1开始,在P6结束 有什么财产可以改变订单吗? 还是应该用某种sortingalgorithm来sorting呢? 这是与生成图表有关的function public void dibujarGrafica6Periodos(ExcelWorksheet ws, CultureInfo idioma) { CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; TextInfo textinfo = cultureInfo.TextInfo; var chart = ws.Drawings.AddChart("barChart2", OfficeOpenXml.Drawing.Chart.eChartType.BarClustered); chart.SetPosition(34, 0, 10, 10); chart.SetSize(940, 20*14); var serie1 = chart.Series.Add(ws.Cells["E36:E41"], ws.Cells["A36:A41"]); var serie2 =chart.Series.Add(ws.Cells["C36:C41"], ws.Cells["A36:A41"]); chart.Title.Text = "Consumo por Periodos – " + textinfo.ToUpper(DateTime.Now.ToString("MMMM", idioma)); chart.Title.Font.Color = System.Drawing.ColorTranslator.FromHtml("#4F81BD"); […]

使用EPPlus使用IF语句失败

我在使用EPPlus的If语句时遇到了一些问题。 我在Excel中的公式是这样的: = IF(AND(L18 <> 0,LEFT(E18,1)= “Z”),2,0) 而我在C#中的代码是这样的 cart.Cells[5 + i, 9].Formula = "IF(AND(L" + (5 + i) + "<> 0,LEFT(E" + (5 + i) + ",1)= Z),2,0)"; 问题是在左(E18,1)= Z.如果我使用“”符号,C#将读取它插入一些整数。 但是如果我不使用“”,Excel将不会将其作为string读取。 任何人都可以帮我解决这个问题吗?

加载大于40MB的stream时EPPLus错误

我在C#MVC上使用EPPlus将excel文件加载到内存中。 我正在从一个file uploadstream: model.File.InputStream 并将其传递给ExcelPackage.Load()方法。 它适用于<40 MB的文件。 但对于较大的文件,我得到的错误: 在EPPlus.dll中发生types“System.Runtime.InteropServices.COMException”的exception,但未在用户代码中处理 附加信息:写入操作期间发生磁盘错误。 (从HRESULTexception:0x8003001D(STG_E_WRITEFAULT))

使用c#在单个xlsx中读取多个Excel工作表

我试图开发一段代码,将抓取单个xlsx中的3个工作表的数据,并将其上传到SQL Server上的3个不同的表。 每个工作表应该上传其内容到一个表(工作表1上传到表客户,工作表2上传到表销售,…) 我设法把它从工作表1的所有数据上传到一个表…这里是它的代码: public partial class LoggedHome : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (IsPostBack && Upload.HasFile) { if (Path.GetExtension(Upload.FileName).Equals(".xlsx")) { var excel = new ExcelPackage(Upload.FileContent); var dt = excel.ToDataTable(); var table = "MenuPrice"; using (var conn = new SqlConnection("Removed for security purpouses")) { var bulkCopy = new SqlBulkCopy(conn); bulkCopy.DestinationTableName […]

试图用epplus核心和.net核心导出为ex​​cel

我试图做一个导出到excelbutton,当它打到我想调用这个API并下载一个Excel表。 我的控制器代码看起来像这样,我诚实卡住,因为我不确定我应该回来。 我对.net core api很抱歉 [Route("api/excel")] public class ExportToExcel : Controller { private readonly ScadaContext _context; public ExportToExcel(ScadaContext context) { _context = context; } // GET: api/values [HttpGet] public ActionResult GetExcelMainView() { var query = _context.Main_View.Where(x => !x.MeterId.StartsWith("HOGC")); List<Object[]> MainViewList = new List<Object[]>(); foreach(var p in query) { MainViewList.Add(new Object[] { "Battery Voltage", p.BatteryVoltage }); […]

我使用EPPlus生成的文件在不同的PC上获得不同的数字

我在我的C#应用​​程序中使用EPPlus生成Excel文件的代码,一切正常,我发送应用程序到客户端,他说,它显示错误的数字。 在他寄给我的Excel文件中,数字真的不一样。 无法弄清楚为什么。 我怀疑Excel是罪魁祸首,因为区域设置或类似的东西而不同地解释数字。 我怎样才能解决这个问题? 例如,20在另一台PC上变成2000: Decimal.TryParse(dataGridView1.Rows[e.RowIndex].Cells[15].Value.ToString().Replace(".", ","), out number); //cell value 20.00 ws.Cells["I33"].Value = number; ws.Cells["I33"].Style.HorizontalAlignment = ExcelHorizontalAlignment.Right; ws.Cells["I33"].Style.Numberformat.Format = "0.00"; //becomes 20,00 结果: