2010-06-15 25 views
9

Sử dụng VSTO hoặc một số công nghệ liên quan, có thể lập trình nhúng một nút trong ô của trang tính Excel và định cấu hình để gọi hàm C# khi được bấm?Thêm các nút vào bảng tính trong .NET (VSTO)

Làm cách nào?

Cảm ơn.

+0

Một nút không thể được nhúng vào trong một tế bào - nút "phao". Điều tốt nhất bạn có thể làm là căn chỉnh nó với một ô tại thời điểm thiết kế. – Jay

+0

Bạn đang cố gắng tự động thêm một nút? Làm thế nào mà sẽ được kích hoạt? Và C# nó sẽ gọi trong một số add-in? Điều này nghe có vẻ như một thiết lập phức tạp, và tôi không rõ ràng tại sao bạn muốn làm điều đó; tại sao không chỉ đơn giản là có một VSTO add-in, và một menu hoặc ribbon mà làm cho các chức năng có sẵn từ bất kỳ bảng? – Mathias

+0

@Jay: Tôi có thể sống với điều đó. Bất kỳ mẹo nào về cách làm nổi một nút phía trên trang tính của tôi? @ Triệu chứng: Có, tôi muốn thêm các nút động và C# cuộc gọi lại sẽ nằm trong phần bổ trợ. Mục đích của bổ trợ của tôi là giúp người dùng đặt ra 'biểu mẫu' trong bảng tính và tôi muốn một số biểu mẫu kết hợp các nút. – mcoolbeth

Trả lời

10

Với tùy chỉnh tài liệu VSTO (ví dụ: Sổ làm việc có mã .Net đính kèm), bạn có thể thêm và loại bỏ điều khiển trong thời gian chạy tới Bảng tính của dự án. Các mã sau minh họa ý tưởng:

public partial class Sheet1 
{ 
    private void Sheet1_Startup(object sender, System.EventArgs e) 
    { 
     var button = this.Controls.AddButton(10, 10, 50, 50, "My Button"); 
     button.Text = "My Button"; 
     button.Click += new EventHandler(button_Click); 
    } 

    void button_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("I was clicked!"); 
    } 

Bạn cũng có thể thêm điều khiển tự động với các tài liệu thông qua một VSTO add-in, sử dụng mã dọc theo những dòng (nhờ người trên VSTO forum cho rằng một trong):

var workSheet = (Excel.Worksheet) sheet; 
var vstoSheet = workSheet.GetVstoObject(); 
var button = vstoSheet.Controls.AddButton(50, 50, 100, 50, "Test"); 
button.Text = "Dynamic Button!"; 

Kiểm tra this post by Eric Carter để biết thêm thông tin.

0

Đây là mã mà làm việc cho tôi trong VSTO Add-in (phiên bản sửa đổi của câu trả lời Mathias của):

using Excel = Microsoft.Office.Interop.Excel; 
using ExcelTools = Microsoft.Office.Tools.Excel; 

public void AddButtonToWorksheet() 
{ 
    Excel.Worksheet worksheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet; 
    ExcelTools.Worksheet vstoSheet = Globals.Factory.GetVstoObject(worksheet); 

    Button button = new Button(); 
    button.Text = "Dynamic Button!"; 
    vstoSheet.Controls.AddControl(
    button, 50, 50, 100, 50, "TestButton"); 
} 
Các vấn đề liên quan