【问题标题】:How to format cells in excel sheet programmatically?如何以编程方式格式化Excel工作表中的单元格?
【发布时间】:2011-11-22 03:07:08
【问题描述】:

我们有一个 asp.net c# 程序,它从 Excel 文件中读取工作表并将其写入新工作表中(如果数据来自 Sql Server 表,也会添加一列)。

问题:在新工作表中,数据未按我们想要的格式设置。例如,我们想要不带时间且左对齐的日期,但它们被格式化为时间和右对齐等。

我们如何格式化 Excel 单元格?

这是我们的代码:

newSheet = (Worksheet)sheets.Add(sheets[1], Type.Missing, Type.Missing, Type.Missing);
newSheet.Name = worksheetName;

for (int i = 0; i < headerList.Count; i++)
{
    newSheet.Cells[1, i + 1] = headerList[i];
    Range headerRange = newSheet.Cells[1, headerList.Count]; ;
    headerRange.Font.Bold = true;
}
for (int i = 0; i < listDrugOrder.Count; i++)
{
    DrugOrder drugorder = listDrugOrder[i];

    newSheet.Cells[i + 2, 1] = drugorder.RES_ID;
    newSheet.Cells[i + 2, 2] = drugorder.STATION;
    newSheet.Cells[i + 2, 3] = drugorder.DATE;
    newSheet.Cells[i + 2, 4] = drugorder.DRUG;
    newSheet.Cells[i + 2, 5] = drugorder.NDC;
    newSheet.Cells[i + 2, 6] = drugorder.UNITS_PER_DOSE;
    newSheet.Cells[i + 2, 7] = drugorder.FORM;
    newSheet.Cells[i + 2, 8] = drugorder.ROUTE;

    newSheet.Cells[i + 2, 10] = drugorder.FREQUENCY;
    newSheet.Cells[i + 2, 11] = drugorder.Heading_LAKE_ORDERS;
    newSheet.Cells[i + 2, 12] = drugorder.HOA;
    newSheet.Cells[i + 2, 13] = drugorder.INSTRUCTIONS;
    newSheet.Cells[i + 2, 14] = drugorder.DIAGNOSIS;
    newSheet.Cells[i + 2, 15] = drugorder.DIAGNOSIS_CODES;
    newSheet.Cells[i + 2, 16] = drugorder.MAR;
    newSheet.Cells[i + 2, 17] = drugorder.TAR;
    newSheet.Cells[i + 2, 18] = drugorder.DRUG_ALERT;
}

workbook.Save();
workbook.Close(null, null, null);
excelApp.Quit();

【问题讨论】:

  • 我这样说但是有语法错误:newSheet.Cells[i + 2, 3] = drugorder.DATE; Horizo​​ntalAlignment == ExcelAlignment.xlLeft;错误 2 'System.Windows.Forms.Horizo​​ntalAlignment' 是“类型”,但用作“变量” C:\ADL\ExcelReader\ExcelReader\Form1.cs 257 68 ExcelReader 错误 3 仅赋值、调用、递增、递减、并且新的对象表达式可以用作语句 C:\ADL\ExcelReader\ExcelReader\Form1.cs 257 68 ExcelReader
  • 那是因为您刚刚复制并粘贴了 Alain 的答案。发生错误是因为您使用的是 ExcelAlignment.xlLeft;而是尝试使用 rng.Horizo​​ntalAlignment = XlHAlign.xlHAlignLeft;

标签: c# asp.net excel


【解决方案1】:

只需在您的单元格(Range)对象上设置the appropriate property

设置NumberFormat控制单元格number formatting,即:

newSheet.Cells[i, j].NumberFormat = "m/d/yyyy"

设置Horizo​​ntalAlignment控制对齐方式,即:

newSheet.Cells[i, j].HorizontalAlignment = ExcelAlignment.xlLeft; //or Excel.XlHAlign.xlHAlignLeft

【讨论】:

  • @ahmd0 修复了链接
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多