devadam4
devadam4

Reputation:

.net c# excel column AutoFit

I'm working with an excel object in c#. I want to auto-fit the columns, but like this: I want the columns' width to be 5 bigger than what the AutoFit method set.

How can I get the width after AutoFit() is used?

How can I make the columns 5 bigger than this width?

Upvotes: 15

Views: 39373

Answers (4)

Karthikeyan P
Karthikeyan P

Reputation: 1267

Try Like this,

ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Sheet1");

//Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(data_table, true);

//Set full Sheet Auto Fit
ws.Cells[1, 1, data_table.Rows.Count, data_table.Columns.Count].AutoFitColumns();

Upvotes: 0

Celso Jr
Celso Jr

Reputation: 295

Try to loop through your rows to get the text length of it:

var row = 1;
ws.Column(1).AutoFit(ws.Cells[row, 1].Text.Length + 5);

Where ws is your Worksheet:

var pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("Plan1")

Upvotes: 1

Mike Rosenblum
Mike Rosenblum

Reputation: 12157

If you wish to use the Selection object and have IntelliSense with early binding, you need to cast the Selection object to a Range first:

Excel.Range selectedRange = (Excel.Range)myExcelApp.Selection;    
selectedRange.Columns.AutoFit();

foreach (Excel.Range column in selectedRange.Columns)
{
    column.ColumnWidth = (double)column.ColumnWidth + 5;
}

-- Mike

Upvotes: 29

shahkalpesh
shahkalpesh

Reputation: 33476

Assuming that you are on cell A1 & have long text in it, following code will make the column Autofit and then increase the width by 5 characters.

Selection.Columns.Autofit
Selection.Columns(1).ColumnWidth = Selection.Columns(1).ColumnWidth + 5

Upvotes: 5

Related Questions