根据每次写入的数据增加excel单元格

时间:2016-11-10 17:46:08

标签: c# excel winforms

目前,我必须指定必须添加值的单元格。我怎么喜欢以某种方式增加,以至于无论用户点击添加到文件按钮多少次,它都应该增加前一个模式。 例如。我有:

        xlWorkSheet.Cells[1, 1] = comboBox2.Text;
        xlWorkSheet.Cells[1, 2] = textBox5.Text;
        xlWorkSheet.Cells[1, 3] = textBox2.Text;
        xlWorkSheet.Cells[1, 4] = comboBox3.Text;
        xlWorkSheet.Cells[1, 5] = textBox3.Text;
        xlWorkSheet.Cells[1, 6] = comboBox1.Text;

单击“添加到xls文件”按钮后,我现在如何使用此模式并保存到文件而不必将其写入代码:

        xlWorkSheet.Cells[2, 1] = comboBox2.Text;
        xlWorkSheet.Cells[2, 2] = textBox5.Text;
        xlWorkSheet.Cells[2, 3] = textBox2.Text;
        xlWorkSheet.Cells[2, 4] = comboBox3.Text;
        xlWorkSheet.Cells[2, 5] = textBox3.Text;
        xlWorkSheet.Cells[2, 6] = comboBox1.Text;

这不像我每次都可以复制和粘贴,这太繁琐了。欢迎所有答案和评论。提前致谢

3 个答案:

答案 0 :(得分:2)

您可以使用财产。

public int IndexProp {get; set;}

public void AddToExcelBtn_Click(object sender, EventArgs e) 
{
    //... some other code

    Index +=1;
    xlWorkSheet.Cells[IndexProp , 1] = comboBox2.Text;
    xlWorkSheet.Cells[IndexProp , 2] = textBox5.Text;
    xlWorkSheet.Cells[IndexProp , 3] = textBox2.Text;
    xlWorkSheet.Cells[IndexProp , 4] = comboBox3.Text;
    xlWorkSheet.Cells[IndexProp , 5] = textBox3.Text;
    xlWorkSheet.Cells[IndexProp , 6] = comboBox1.Text;
}

答案 1 :(得分:1)

这是基于之前的答案,但更容易看到,并会在文件打开时重置您的索引。如果每个组合或文本框都有一个按钮,则需要添加其他标识符。

public static int indexProp = 0;

public void OpenExcelFile(string path){
    //Open new file here
    indexProp = 0; //reset value as needed
}

public void AddToExcelBtn_Click(object sender, EventArgs e) 
{
//... some other code

indexProp +=1;
xlWorkSheet.Cells[indexProp , 1] = comboBox2.Text;
xlWorkSheet.Cells[indexProp , 2] = textBox5.Text;
xlWorkSheet.Cells[indexProp , 3] = textBox2.Text;
xlWorkSheet.Cells[indexProp , 4] = comboBox3.Text;
xlWorkSheet.Cells[indexProp , 5] = textBox3.Text;
xlWorkSheet.Cells[indexProp , 6] = comboBox1.Text;

}

答案 2 :(得分:1)

您不必打开工作簿即可写入。有一些技术可用,如OpenXML和ADO.NET,可以像对待数据库一样对待它并操纵信息。 OpenXML有一个陡峭的学习曲线,所以我会尝试ADO.NET,如果它可以在你的网络上工作。

Interop打开文件,您必须使用单元格或外部文本文件来检索数字。

另一方面,我假设您在幕后谈论VBA以添加数据。如果你附加数据,你需要做的就是从底部开始。

lastRow = valWkSht.Range("B65535").End(xlUp).Row