如何在 EPPlus 中将 Header 标题设置在 excel sheet 的顶部
How to set Header Title in top of the excel sheet in EPPlus
我可以使用 EPPlus 库导出 excel。当我添加 Header 和页脚时,它只能在我单击 Ctrl + P 时显示,我的意思是仅在打印预览中显示。现在我想在顶行中设置标题,将所有单元格合并,然后写入列 header。那么如何在第二个列表中的 sheet 的第一行和 table 的第 Header 列中设置标题文本。
using (ExcelPackage excel = new ExcelPackage())
{
var sheet = excel.Workbook.Worksheets.Add("Worksheet1");
var headerRow = new List<string[]>()
{
new string[]
{
"Transaction Id", "Date", "Time", "Id", "Name", "Amount"
}
};
string headerRange = "A1:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "1";
// Target a worksheet
var worksheet = excel.Workbook.Worksheets["Worksheet1"];
// Popular header row data
worksheet.Cells[headerRange].LoadFromArrays(headerRow);
var totalNoOfRows = depositList.Count() + 1;
//ExcelWorksheet ws = worksheet.Workbook.Worksheets.Add("Demo");
//ws.Cells["A1:G1"].Merge = true;
// Header Text Setup
var header = sheet.HeaderFooter.OddHeader;
header.CenteredText = "&18&U&\"Times New Roman,Regular Bold\"&14& " + ClientName + " \n Report \n";
worksheet.PrinterSettings.TopMargin = 1;
// Footer Text Setup
ExcelHeaderFooterText footer = sheet.HeaderFooter.OddFooter;
header.RightAlignedText = "&10&P of &N";
footer.LeftAlignedText = "&16&\"Aril, Bold\"Download Date and Time " + DateTime.Now;
using (MemoryStream stream = new MemoryStream())
{
excel.SaveAs(stream);
return File(stream.ToArray(),
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Report(" + ClientName + ").xlsx");
}
}
我已经添加了图像,但我对在第二行中设置 Table Header 行感到困惑。
ExcelWorksheet ws = worksheet.Workbook.Worksheets.Add("Demo");
ws.Cells["A1:J1"].Merge = true;
var headerRow = new List<string[]>()
{
new string[]
{
"Transaction Id", "Date", "Time", "Id", "Name", "Amount"
}
};
我不认为你正在尝试做的事情,是 EPPlus 的可能性。 EPPlus 仅提供 excel 本身支持的功能,而 Excel 本身不支持在编辑模式下查看 header 和页脚。这就是关于 Headers 的 documentation 和页脚必须说明的内容。这适用于 Excel for Microsoft 365、Excel 2019、Excel 2016、Excel 2013、Excel 2010、Excel 2007、Excel 启动器 2010.
Headers and footers are displayed only in Page Layout view, Print Preview, and on printed pages.
此外,如果您查看 ExcelHeaderFooter
class 的 source,则没有涉及在页面布局视图中查看或任何相关内容的规定(您可以设置尽管在工作表上设置了打印机设置)。
更新
您可以使用以下代码行将标题放在第一行
// This is similar to the snippet that you have added.
// You can specify your custom range, content and required styling.
sheet.Cells["A1:J1"].Merge = true;
sheet.Cells["A1"].Value = "Title";
此外,header行可以添加到标题行下方,如下所示
// Notice here, this is similar to what you were trying. However, we have A2
// as the beginning of our headerRange and not A1. Similarly, notice the modification
// done to the upper bound so as to have a valid excel range.
// You can play around with the range here. But key takeaway is the second row we are dealing with
string headerRange = "A2:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "2";
我可以使用 EPPlus 库导出 excel。当我添加 Header 和页脚时,它只能在我单击 Ctrl + P 时显示,我的意思是仅在打印预览中显示。现在我想在顶行中设置标题,将所有单元格合并,然后写入列 header。那么如何在第二个列表中的 sheet 的第一行和 table 的第 Header 列中设置标题文本。
using (ExcelPackage excel = new ExcelPackage())
{
var sheet = excel.Workbook.Worksheets.Add("Worksheet1");
var headerRow = new List<string[]>()
{
new string[]
{
"Transaction Id", "Date", "Time", "Id", "Name", "Amount"
}
};
string headerRange = "A1:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "1";
// Target a worksheet
var worksheet = excel.Workbook.Worksheets["Worksheet1"];
// Popular header row data
worksheet.Cells[headerRange].LoadFromArrays(headerRow);
var totalNoOfRows = depositList.Count() + 1;
//ExcelWorksheet ws = worksheet.Workbook.Worksheets.Add("Demo");
//ws.Cells["A1:G1"].Merge = true;
// Header Text Setup
var header = sheet.HeaderFooter.OddHeader;
header.CenteredText = "&18&U&\"Times New Roman,Regular Bold\"&14& " + ClientName + " \n Report \n";
worksheet.PrinterSettings.TopMargin = 1;
// Footer Text Setup
ExcelHeaderFooterText footer = sheet.HeaderFooter.OddFooter;
header.RightAlignedText = "&10&P of &N";
footer.LeftAlignedText = "&16&\"Aril, Bold\"Download Date and Time " + DateTime.Now;
using (MemoryStream stream = new MemoryStream())
{
excel.SaveAs(stream);
return File(stream.ToArray(),
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Report(" + ClientName + ").xlsx");
}
}
我已经添加了图像,但我对在第二行中设置 Table Header 行感到困惑。
ExcelWorksheet ws = worksheet.Workbook.Worksheets.Add("Demo");
ws.Cells["A1:J1"].Merge = true;
var headerRow = new List<string[]>()
{
new string[]
{
"Transaction Id", "Date", "Time", "Id", "Name", "Amount"
}
};
我不认为你正在尝试做的事情,是 EPPlus 的可能性。 EPPlus 仅提供 excel 本身支持的功能,而 Excel 本身不支持在编辑模式下查看 header 和页脚。这就是关于 Headers 的 documentation 和页脚必须说明的内容。这适用于 Excel for Microsoft 365、Excel 2019、Excel 2016、Excel 2013、Excel 2010、Excel 2007、Excel 启动器 2010.
Headers and footers are displayed only in Page Layout view, Print Preview, and on printed pages.
此外,如果您查看 ExcelHeaderFooter
class 的 source,则没有涉及在页面布局视图中查看或任何相关内容的规定(您可以设置尽管在工作表上设置了打印机设置)。
更新
您可以使用以下代码行将标题放在第一行
// This is similar to the snippet that you have added.
// You can specify your custom range, content and required styling.
sheet.Cells["A1:J1"].Merge = true;
sheet.Cells["A1"].Value = "Title";
此外,header行可以添加到标题行下方,如下所示
// Notice here, this is similar to what you were trying. However, we have A2
// as the beginning of our headerRange and not A1. Similarly, notice the modification
// done to the upper bound so as to have a valid excel range.
// You can play around with the range here. But key takeaway is the second row we are dealing with
string headerRange = "A2:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "2";