當本地沒有安裝Excel,但是又想導出Excel,采用Office插件是行不通的,NPOI是導出Excel的一個開源的插件。在導出Excel后,為了方便閱讀,可以才采用自適應列寬的方式使得單元格的寬度和文本的寬度接近。NPOI中工作簿ISheet有自適應列寬的方法,但是其效果列寬還是比單元中文字的寬度稍微大一點。此時我們可以自己計算其寬度,自定義列寬。一下這種方式是支持中英文以及數字的。
public void AutoColumnWidth(ISheet sheet,int cols) { for (int col = 0; col <= cols; col++) { sheet.AutoSizeColumn(col);//自適應寬度,但是其實還是比實際文本要寬 int columnWidth = sheet.GetColumnWidth(col) / 256;//獲取當前列寬度 for (int rowIndex = 1; rowIndex <= sheet.LastRowNum; rowIndex++) { IRow row = sheet.GetRow(rowIndex); ICell cell = row.GetCell(col); int contextLength = Encoding.UTF8.GetBytes(cell.ToString()).Length;//獲取當前單元格的內容寬度 columnWidth = columnWidth < contextLength ? contextLength : columnWidth; } sheet.SetColumnWidth(col, columnWidth * 200);// } }
sheet.SetColumnWidth(col, columnWidth * 200);// 經過測試200比較合適。