我目前正在使用大量数据为我的工作场所创建和显示视觉上令人愉悦的文档,显示运动/运动数据列表.
我有一个专栏,我正在用它来展示这些运动的频道.然而,有些运动有多个频道,我决定把它们放在运动名称和运动时间旁边的同一个单元格中.附上的图像应该显示我得到的与我想要的相比
我不会提供我的所有代码,因为它是草率,和过度.但是,下面代码块中的概念应该足够了
// Create a new worksheet
var worksheet = package.Workbook.Worksheets.Add($"{DateTimeString} Lineup");
// Change all cells to font Calibri 24px
worksheet.Cells.Style.Font.Name = "Calibri";
worksheet.Cells.Style.Font.Size = 24;
// Merge cells A1:C1
worksheet.Cells["A1:C1"].Merge = true;
worksheet.Cells["A1:C1"].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
worksheet.Cells["A1:C1"].Style.Font.Bold = true;
worksheet.Cells["A1:C1"].Style.Font.UnderLine = true;
worksheet.Cells["A1:C1"].Style.Border.BorderAround(ExcelBorderStyle.Thin);
// Set A1:C1 to "Sunday NFL Games"
worksheet.Cells["A1"].Value = $"{dayOfWeek} {League.LeagueNameShort} Games";
// Set A2 to "Time", B2 to "Channel", and C2 to "Games" + DateTime.Now.ToString("MM/dd/yyyy")
worksheet.Cells["A2"].Value = "Time";
worksheet.Cells["A2"].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
worksheet.Cells["A2"].Style.Font.Bold = true;
worksheet.Cells["A2"].Style.Border.BorderAround(ExcelBorderStyle.Thin);
worksheet.Cells["B2"].Value = "Channel";
worksheet.Cells["B2"].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
worksheet.Cells["B2"].Style.Font.Bold = true;
worksheet.Cells["B2"].Style.Border.BorderAround(ExcelBorderStyle.Thin);
worksheet.Cells["C2"].Value = "Games " + date.ToString("MM/dd/yyyy");
worksheet.Cells["C2"].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
worksheet.Cells["C2"].Style.Font.Bold = true;
worksheet.Cells["C2"].Style.Border.BorderAround(ExcelBorderStyle.Thin);
//Find Games
int row = 3;
foreach (SportDataExport ex in GetSportDataExport(DateTimeString, League).OrderBy(export => DateTime.ParseExact(export.GameTime, "h:mmtt", CultureInfo.InvariantCulture)))
{
//Set Cell Values
worksheet.Cells[row, 1].Value = ex.GameTime;
worksheet.Cells[row, 2].Value = ex.Channels;
worksheet.Cells[row, 3].Value = ex.Teams;
if(ex.ChannelCount == 0)
{
worksheet.Row(row).Height = 31.5;
}
else
{
worksheet.Row(row).Height = 31.5 * ex.ChannelCount;
}
//Style Cells
worksheet.Cells[row, 1].Style.VerticalAlignment = ExcelVerticalAlignment.Center;
worksheet.Cells[row, 2].Style.VerticalAlignment = ExcelVerticalAlignment.Center;
worksheet.Cells[row, 3].Style.VerticalAlignment = ExcelVerticalAlignment.Center;
worksheet.Cells[row, 1].Style.Border.BorderAround(ExcelBorderStyle.Thin);
worksheet.Cells[row, 2].Style.Border.BorderAround(ExcelBorderStyle.Thin);
worksheet.Cells[row, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin);
row = row + 1;
}
AutoSizeWorksheet(worksheet);
// Save the Excel package
FileInfo fileInfo = new FileInfo(filePath);
package.SaveAs(fileInfo);
我try 过手动设置行高、设置"WordWrap"和3种不同的NewLines方法.一旦用户打开Excel工作表,单击单元格并按Enter或通过 Select 另一个单元格退出单元格,该单元格就会被固定.