Hello I have this code where i create an xlsx file and i need to pre set the width of the xlsx sheet cells. The actual problem is that when i open the excell i need to double click on the gap between the columns with the mouse in order to unwrap the columns and revieal the data that is hidden. Is there a way to do this programmaticaly with Epplus?
using (ExcelPackage p = new ExcelPackage()) { String filepath = "C://StatsYellowPages.csv"; DataSet ds = ExportCSVFileToDataset(filepath, "tblCustomers", "\t"); //Here setting some document properties p.Workbook.Properties.Title = "StatsYellowPages"; //Create a sheet p.Workbook.Worksheets.Add("Sample WorkSheet"); ExcelWorksheet ws = p.Workbook.Worksheets[1]; ws.Name = "StatsYellowPages"; //Setting Sheet's name //Merging cells and create a center heading for out table ws.Cells[1, 1].Value = "StatsYellowPages"; ws.Cells[1, 1, 1, ds.Tables[0].Columns.Count].Merge = true; ws.Cells[1, 1, 1, ds.Tables[0].Columns.Count].Style.Font.Bold = true; ws.Cells[1, 1, 1, ds.Tables[0].Columns.Count].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; int colIndex = 1; int rowIndex = 2; foreach (DataColumn dc in ds.Tables[0].Columns) //Creating Headings { var cell = ws.Cells[rowIndex, colIndex]; //Setting the background color of header cells to Gray var fill = cell.Style.Fill; fill.PatternType = ExcelFillStyle.Solid; fill.BackgroundColor.SetColor(Color.Gray); //Setting Top/left,right/bottom borders. var border = cell.Style.Border; border.Bottom.Style = ExcelBorderStyle.Thin; border.Top.Style = ExcelBorderStyle.Thin; border.Left.Style = ExcelBorderStyle.Thin; border.Right.Style = ExcelBorderStyle.Thin; //Setting Heading Value in cell cell.Value = dc.ColumnName; colIndex++; } foreach (DataRow dr in ds.Tables[0].Rows) // Adding Data into rows { colIndex = 1; rowIndex++; foreach (DataColumn dc in ds.Tables[0].Columns) { var cell = ws.Cells[rowIndex, colIndex]; //Setting Value in cell cell.Value = dr[dc.ColumnName].ToString(); //Setting borders of cell var border = cell.Style.Border; colIndex++; } } //Generate A File with Random name Byte[] bin = p.GetAsByteArray(); string file = "c:\\StatsYellowPages.xlsx"; File.WriteAllBytes(file, bin);
No, it does not require Excel to be installed on the server, as you can read in the docs: EPPlus is a . NET library that reads and writes Excel files using the Office Open XML format (xlsx). EPPlus has no dependencies other than .
If you want to merge cells dynamically, you can also use: worksheet. Cells[FromRow, FromColumn, ToRow, ToColumn].
I find that setting the column widths after I have filled in all the data on the sheet works:
ws.Column(1).Width = 50;
There is also the autoFitColumns method but this ignores cells with formulas and wrapped text so it did not work for me.
ws.Cells["A1:K20"].AutoFitColumns();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With