创建新的 sheet 并为每个 sheet 生成一些随机数据?
Create new sheets and generate some random data for each sheet?
我正在尝试做以下事情:在 Excel 文档中创建 10 个 sheet,然后为每个 sheet 生成 100x100 个随机数,最后用每个 sheet 中的数据分别(例如计算 100x100 矩阵的总和)。
从网上找了一些代码如下:
public partial class Sheet1
{
Button randData = new Button();
Button draw = new Button();
Microsoft.Office.Tools.Excel.Chart sumfigure = null;
private void Sheet1_Startup(object sender, System.EventArgs e)
{
randData.Text = "RandomData";
randData.Click += new EventHandler(randData_Click);
Globals.ThisWorkbook.ActionsPane.Controls.Add(randData);
draw.Text = "DrawFigure";
draw.Click += new EventHandler(draw_Click);
Globals.ThisWorkbook.ActionsPane.Controls.Add(draw);
}
private void randData_Click(object sender, EventArgs e)
{
bool oldScreenUpdatingSetting = this.Application.ScreenUpdating;
try
{
this.Application.ScreenUpdating = false;
Random r = new Random();
for (int i = 1; i < 101; ++i)
{
string address = String.Format("A{0}:CV{0}", i);
Excel.Range ranges = Range[address, missing];
for (int j = 1; j < 101; ++j)
{
Excel.Range range = ranges.get_Item(j, missing) as Excel.Range;
range.Value2 = r.Next(10);
}
}
}
finally
{
this.Application.ScreenUpdating = oldScreenUpdatingSetting;
}
}
...
}
我试着写:
public partial class ThisWorkbook
{
//Sheet1[] sheets;
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
for (int i = 1; i <= 3; i++) create 3 first
{
Sheets.Add();
}
}
}
虽然它确实为我创建了 3 个 sheet,但当我单击该按钮时,它只生成第一个 sheet 的数据。该代码似乎仅适用于 Sheet1。
我的问题的正确实施是什么?
It seems that the code works for Sheet1 only.
该代码仅适用于活动 sheet。要使其适用于所有 sheet,您需要为每个 sheet 添加一个循环。你可以使用Worksheets属性。对于 Application 对象,returns 表示活动工作簿中所有工作的 Sheets 集合sheet。对于 Workbook 对象,returns 一个 Sheets 集合,表示指定工作簿中的所有作品sheet。
我正在尝试做以下事情:在 Excel 文档中创建 10 个 sheet,然后为每个 sheet 生成 100x100 个随机数,最后用每个 sheet 中的数据分别(例如计算 100x100 矩阵的总和)。
从网上找了一些代码如下:
public partial class Sheet1
{
Button randData = new Button();
Button draw = new Button();
Microsoft.Office.Tools.Excel.Chart sumfigure = null;
private void Sheet1_Startup(object sender, System.EventArgs e)
{
randData.Text = "RandomData";
randData.Click += new EventHandler(randData_Click);
Globals.ThisWorkbook.ActionsPane.Controls.Add(randData);
draw.Text = "DrawFigure";
draw.Click += new EventHandler(draw_Click);
Globals.ThisWorkbook.ActionsPane.Controls.Add(draw);
}
private void randData_Click(object sender, EventArgs e)
{
bool oldScreenUpdatingSetting = this.Application.ScreenUpdating;
try
{
this.Application.ScreenUpdating = false;
Random r = new Random();
for (int i = 1; i < 101; ++i)
{
string address = String.Format("A{0}:CV{0}", i);
Excel.Range ranges = Range[address, missing];
for (int j = 1; j < 101; ++j)
{
Excel.Range range = ranges.get_Item(j, missing) as Excel.Range;
range.Value2 = r.Next(10);
}
}
}
finally
{
this.Application.ScreenUpdating = oldScreenUpdatingSetting;
}
}
...
}
我试着写:
public partial class ThisWorkbook
{
//Sheet1[] sheets;
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
for (int i = 1; i <= 3; i++) create 3 first
{
Sheets.Add();
}
}
}
虽然它确实为我创建了 3 个 sheet,但当我单击该按钮时,它只生成第一个 sheet 的数据。该代码似乎仅适用于 Sheet1。
我的问题的正确实施是什么?
It seems that the code works for Sheet1 only.
该代码仅适用于活动 sheet。要使其适用于所有 sheet,您需要为每个 sheet 添加一个循环。你可以使用Worksheets属性。对于 Application 对象,returns 表示活动工作簿中所有工作的 Sheets 集合sheet。对于 Workbook 对象,returns 一个 Sheets 集合,表示指定工作簿中的所有作品sheet。