【问题标题】:How to set "AutoSize" to Excel sheet column? (NPOI)如何将“AutoSize”设置为 Excel 工作表列? (非营利组织)
【发布时间】:2011-05-19 07:55:51
【问题描述】:

根据How can columns be set to 'autosize' in Excel documents created with 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);
 }

但它不起作用。怎么做才对?

【问题讨论】:

    标签: c# .net excel npoi


    【解决方案1】:

    这是一些对我有用的代码,使用你的循环:

        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();
    

    如果它对您不起作用,那么我们需要查看您要推出的数据类型,看看是否有不同之处在那里产生了影响。 (我假设我们没有版本差异或类似问题)。

    【讨论】:

    • 我无法从您的回答中看出问题和解决方案是什么。您添加了问题中不存在的代码,但该代码似乎与自动调整大小无关。
    • 是的,这就是示例代码的重点。因此代码示例之后的单词。
    • 具体来说,你解决了什么问题?哪一行代码修复了它?
    • 让我总结一下。人发布代码说他的代码不起作用。我发布代码说我的代码正在运行。由于代码示例非常相似,我提出了其他可能产生影响的问题。人不回我。答案神奇地被接受和投票。故事结束,每个人都回到日常工作中。
    • 感谢您分享您的感受。
    【解决方案2】:

    只是为 YellowFog 的答案添加一点额外内容。我发现我必须将所有数据添加到工作表中,然后遍历列,设置 AutoSizeColumn(idx) 以使其正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      相关资源
      最近更新 更多