[英]Export Button grid array to Ms Excel
嗨,我有一個小程序,它使用按鈕數組生成網格。 單擊按鈕時,它們會更改顏色。 如何將這種布局准確地導出到Ms Excel中,甚至可以在表單上顯示? 我希望Excel中的單元格代表按鈕
我的程序如下所示:
我如何創建網格:
int col = 7;
int row = 4;
int count = 0;
Button[][] buttons;
public void placeRows()
{
for (int r = 0; r < row; r++)
{
createColumns(r);
}
}
public void createColumns(int r)
{
int s = r * 25; //gap
for (int c = 0; c < col; c++)
{
buttons[r][c] = new Button();
buttons[r][c].SetBounds(75 * c, s, 75, 25);
buttons[r][c].Text = Convert.ToString(c);
buttons[r][c].Click += new EventHandler(grid_Click);
panel1.Controls.Add(buttons[r][c]);
}
}
private void Form1_Load(object sender, EventArgs e)
{
placeRows();
}
void grid_Click(object sender, EventArgs e)
{
Button button = sender as Button;
if (count == 0)
{
button.BackColor = Color.Red;
count++;
}
else if (count == 1)
{
button.BackColor = Color.Blue;
count--;
}
}
private void btnExport_Click(object sender, EventArgs e)
{
//have no idea how to start this
}
您可以使用Microsoft Excel COM組件。
首先,您必須添加Microsoft Excel XX.X對象庫作為參考(在本例中,我使用的是12.0)。
下面的代碼包含簡單的類,該類使用按鈕數組中的數據創建新的工作表。 如果要保存工作區,則應取消注釋app.SaveWorkspace(excelName);
在Do
方法中。
using Microsoft.Office.Interop.Excel;
namespace SimpleExcelExport
{
class Export
{
public Export(bool defaultBackgroundIsWhite)
{
this.defaultBackgroundIsWhite = defaultBackgroundIsWhite;
app = new Application();
app.Visible = true;
workbook = app.Workbooks.Add(1);
worksheet = (Worksheet)workbook.Sheets[1];
}
public void Do(string excelName, System.Windows.Forms.Button[][] array)
{
for (int i = 0; i <= array.GetUpperBound(0); i++)
{
for (int j = 0; j <= array[i].GetUpperBound(0); j++)
{
AddData(i, j, array[i][j]);
}
}
//app.SaveWorkspace(excelName);
}
private void AddData(int row, int col, System.Windows.Forms.Button button)
{
if (button == null) return;
row++;
col++;
Range range = worksheet.Cells[row, col];
if (!defaultBackgroundIsWhite)
range.Interior.Color = button.BackColor.ToArgb();
else
range.Interior.Color = button.BackColor.Name != "Control" ? button.BackColor.ToArgb() : System.Drawing.Color.White.ToArgb();
range.NumberFormat = "";
worksheet.Cells[row, col] = button.Text;
}
private Application app = null;
private Workbook workbook = null;
private Worksheet worksheet = null;
private Range workSheet_range = null;
private bool defaultBackgroundIsWhite;
}
}
用法示例:
private void btnExport_Click(object sender, EventArgs e)
{
Export ep = new Export(true);
ep.Do("test.xsl", buttons);
}
您需要做的是創建一些隨時可以使用數據的數組,因此您可以做兩件事:
所以放棄那條線
panel1.Controls.Add(buttons[r][c]);
並用數據填充數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.