在 for 循环中为多个工作表生成唯一名称
Generate unique name for multiple worksheets in a for loop
我正在使用 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 ws = package.Workbook.Worksheets.Add(String.Format("Sheet{0}", i));
您正在设置工作表名称,这就是为什么您以 'Sheet1'、'Sheet2' 等结尾的原因。
将其更改为其他内容,您的工作表将以不同的方式命名。
现在,我不确定,如果您的问题是 哪里 您可以更改名称或 如何 您可以这样做,使其独一无二。根据您的目标,您可以使用 Guid's.
您没有显示名称的来源,但最好的方法可能是使用您用来填充 sheet 的同一数据源中某个字段的名称。
这里有一种方法可以给它们每个唯一的名称,将它们存储在一个列表中,您可以使用当前使用的相同索引访问该列表。当然,您必须以某种方式确保名称在列表中的顺序正确:
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);
我正在使用 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 ws = package.Workbook.Worksheets.Add(String.Format("Sheet{0}", i));
您正在设置工作表名称,这就是为什么您以 'Sheet1'、'Sheet2' 等结尾的原因。 将其更改为其他内容,您的工作表将以不同的方式命名。
现在,我不确定,如果您的问题是 哪里 您可以更改名称或 如何 您可以这样做,使其独一无二。根据您的目标,您可以使用 Guid's.
您没有显示名称的来源,但最好的方法可能是使用您用来填充 sheet 的同一数据源中某个字段的名称。
这里有一种方法可以给它们每个唯一的名称,将它们存储在一个列表中,您可以使用当前使用的相同索引访问该列表。当然,您必须以某种方式确保名称在列表中的顺序正确:
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);