创建新工作表并为每个工作表生成一些随机数据?

时间:2015-07-17 07:45:57

标签: c# excel vsto

我尝试做以下事情:在Excel文档中创建10张纸,然后为每张纸生成100x100随机数,最后分别对每张纸中的数据执行一些操作(计算100x100矩阵的总和) ,例如)。

我从互联网上找到了一些代码如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/heatmap.js"></script>
<script src="http://code.highcharts.com/modules/treemap.js"></script>
<div id="container"></div><br/><br/>

我试着写:

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;
        }
    }
    ...
}

虽然它确实为我创建了3张纸,但当我点击按钮时,它只会为第一张纸生成数据。似乎该代码仅适用于Sheet1。

我的问题的正确实施是什么?

1 个答案:

答案 0 :(得分:0)

  

似乎代码仅适用于Sheet1。

该代码仅适用于活动工作表。要使其适用于所有工作表,您需要为每个工作表添加一个循环。您可以使用Worksheets属性。对于Application对象,返回表示活动工作簿中所有工作表的Sheets集合。对于Workbook对象,返回表示指定工作簿中所有工作表的Sheets集合。