我正在使用 for
循环生成一些工作表,我想给每个工作表提供一个唯一的名称。我得到的是Sheet1
,Sheet2
,Sheet3
等。
以下是我的代码:
var package = new ExcelPackage();
for (var i = 0; i < ds.Tables.Count; i++)
{
var ws = package.Workbook.Worksheets.Add(String.Format("Sheet{0}", i));
ws.Cells["A1"].LoadFromDataTable(i == 0
? Transpose(ds.Tables[i].Copy()).DefaultView.ToTable()
: ds.Tables[i], true, TableStyles.Medium1);
ws.Cells[ws.Dimension.Address].AutoFitColumns();
ws.Cells["A:J"].Style.Numberformat.Format = "#,##0";
}
您尚未显示名称的来源,但最好的方法是使用您使用的同一数据源中的某个字段的名称来填充该名称表。
这是给他们每个唯一名称的一种方法,就是将它们存储在列表中,您可以使用当前使用的相同索引访问。当然,您必须以某种方式确保名称在列表中的正确顺序中:
var sheetNames = new List<string> { "Summary", "EmployeeData", "Benefits" };
for (var i = 0; i < ds.Tables.Count; i++)
{
// Choose a name from the list or use 'Sheet1, 2, 3' if we don't have enough names
var sheetName = i < sheetNames.Count
? sheetNames[i]
: String.Format("Sheet{0}", sheetNames.Count - i);
var ws = package.Workbook.Worksheets.Add(sheetName);
在此行中的这一行中:
var ws = package.Workbook.Worksheets.Add(String.Format("Sheet{0}", i));
您正在设置工作表名称,这就是为什么您最终以'Sheet1','Sheet2'和F.将其更改为其他,您的工作表命名为不同。
现在,我不确定,如果您的问题是 您可以更改名称或如何做到这一点,以使其独一无二。根据您的目标,您可以使用GUID。