Как установить" AutoSize " в столбец листа Excel? (NPOI)
по данным Как можно установить столбцы на "автозайз" в документах Excel, созданных с помощью NPOI? Я сделал так:
foreach (DataColumn column in dataTable.Columns)
{
int rowIndex = 0;
foreach (DataRow row in dataTable.Rows)
{
HSSFRow dataRow = sheet.CreateRow(rowIndex);
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
rowIndex++;
}
sheet.AutoSizeColumn(column.Ordinal);
}
но это не работает. Как поступить правильно?
2 ответов
вот некоторый код, который работает для меня, используя ваши петли:
HSSFWorkbook spreadsheet = new HSSFWorkbook();
DataSet results = GetSalesDataFromDatabase();
//here, we must insert at least one sheet to the workbook. otherwise, Excel will say 'data lost in file'
HSSFSheet sheet1 = spreadsheet.CreateSheet("Sheet1");
foreach (DataColumn column in results.Tables[0].Columns)
{
int rowIndex = 0;
foreach (DataRow row in results.Tables[0].Rows)
{
HSSFRow dataRow = sheet1.CreateRow(rowIndex);
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
rowIndex++;
}
sheet1.AutoSizeColumn(column.Ordinal);
}
//Write the stream data of workbook to the file 'test.xls' in the temporary directory
FileStream file = new FileStream(Path.Combine(Path.GetTempPath(), "test.xls") , FileMode.Create);
spreadsheet.Write(file);
file.Close();
Если это не работает для вас, тогда нам нужно посмотреть на тип данных, которые вы выталкиваете, посмотрите, есть ли разница, которая имеет значение. (Я предполагаю, что у нас нет несоответствия версии или что-то подобное).
просто добавить дополнительный бит к ответу YellowFog. Я обнаружил, что мне нужно добавить все данные на лист, а затем выполнить итерацию по столбцам, установив AutoSizeColumn(idx), чтобы это работало правильно.