Aquí hay un código que está trabajando para mí, con sus bucles:
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();
Si esto no funciona para usted, entonces tenemos que mirar el tipo de datos que está empujando hacia fuera, ver si hay una diferencia que hace la diferencia allí. (Estoy asumiendo que no tenemos una discrepancia de versión ni nada de eso).
No puedo ver en su respuesta cuál fue el problema y la solución. Agregaste un código que no está presente en la pregunta, pero ese código parece irrelevante para el autosizing. – buffjape
Sí, ese es el tipo de punto del código de ejemplo. De ahí las palabras después de la muestra del código. – Yellowfog
Específicamente, ¿cuál fue el problema que resolvió? ¿Qué línea de código lo solucionó? – buffjape