c# - NPOI 日期格式单元格

标签 c# date format cell npoi

我正在使用 NPOI 在 Sheet1 中创建固定工作表模板,并且需要来自 Sheet2 的日期格式的数据。我从数据库生成 DataTable 以在 Sheet2 中设置数据。 这是我的代码:

private DataTable getWeek()
{    
  strConn = WebConfigurationManager.ConnectionStrings["myConn"].ConnectionString;
  conn = new OdbcConnection(strConn);
  conn.Open();
  sql = "SELECT week, sunday, saturday FROM tb_weekreferences";     
  da = new OdbcDataAdapter(sql, conn);
  dt = new DataTable();
  da.Fill(dt);
  conn.Close();        

  return dt;

}

然后将 DataTable 导出到 Excel:

private int ExportDataTableToExcel(DataTable sourceTable, ISheet sheet)
    {
        IRow headerRow = sheet.CreateRow(0);
        ICell headerCell;
        ICell cell = null;
        Dictionary<String, ICellStyle> styles = CreateExcelStyles(hssfwb);

        //handling value
        int rowIdx = 1;
        foreach (DataRow row in sourceTable.Rows)
        {
            IRow dataRow = sheet.CreateRow(rowIdx);            
            foreach (DataColumn column in sourceTable.Columns)
            {
                cell = dataRow.CreateCell(column.Ordinal);                
                cell.SetCellValue(row[column].ToString());
                cell.CellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
                cell.CellStyle = styles["cell"]; 
            }            
            rowIdx++;
        }

        //handling header
        foreach (DataColumn column in sourceTable.Columns)
        {
            headerCell = headerRow.CreateCell(column.Ordinal);
            headerCell.SetCellValue(column.ColumnName);
            headerCell.CellStyle = styles["header"];
            sheet.AutoSizeColumn(column.Ordinal);
            sheet.SetColumnWidth(column.Ordinal, (sheet.GetColumnWidth(column.Ordinal) + (5 * 256))); // set width = autofit() + (5 * 256)
        }
        return rowIdx;
    }

在 Sheet1 中,我使用 vlookup 公式从 Sheet2 中获取“星期日”和“星期六”。但它不起作用,因为 Sheet2 中周、星期日和星期六的值看起来像字符串(左对齐单元格)。生成excel数据时如何设置日期单元格格式? 请给我解决方案。

谢谢。

最佳答案

第一个问题是这条线

cell.SetCellValue(row[column].ToString());

您正在将值转换为字符串,但您可能将其转换为 DateTime 格式,因此 NPOI 知道这是日期时间。

或者试试这个是否有效:

cell.SetCellValue(DateTime.Now);

其次,首先尝试为您的单元格设置样式,然后更改它的 DataFormat 属性,但使用如下自定义格式:

IDataFormat dataFormatCustom = workbook.CreateDataFormat();
cell.CellStyle = styles["cell"]; 
cell.CellStyle.DataFormat = dataFormatCustom.GetFormat("yyyyMMdd HH:mm:ss");

这会将您的 DateTime 值格式化为人类可读的格式。

关于c# - NPOI 日期格式单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21273949/

相关文章:

java - Android SQLite 查询某月某天

email - 如何正确设置此多部分电子邮件的格式?

python - 如何在 Python matplotlib 中的 LaTeXed 下标中包含字符串链

c# - 如何在 C# 中旋转标签?

c# - WCF/LINQ to SQL 中的序列化

c# - 如何使用 C# 替换包含反斜杠的字符串中的某些值?

Java String to Date 格式为 “MM/dd/yyyy HH:mm:ss a” 的对象

Javascript:如何生成每月日期?

python - 按列表顺序打印字典

c# - 如何为数百个并发连接优化/设计 WCF?