无法获取字段的值?

时间:2019-02-17 11:53:08

标签: c#

我试图从excel的Windows窗体应用程序中获取插入文本框中的值。我试图实例化该类,还尝试将值放入构造函数中,也尝试使用

rvalue.Value2 = (decimal)a.SumaDepusa;

并使SumaDepusa字段变为静态,这对SumaDepusa造成相同的错误:'Form1'不包含'SumaDepusa'的定义,并且没有可访问的扩展方法'SumaDepusa'接受第一个参数可以找到类型“ Form1”(是否缺少using指令或程序集引用?) 这是完整的代码:

namespace WindowsFormsApp1 {

public partial class Form1 : Form {

    public Form1 () {

        InitializeComponent ();

    }

    public void textBox1_TextChanged (object sender, EventArgs e) {
        decimal SumaDepusa = decimal.Parse (textBox1.Text);
    }

    public class SumaFinala {

        public void Open () {
            try {
                Excel.Application app = new Excel.Application ();
                app.Visible = true;
                Form1 a = new Form1 ();
                Excel.Workbook wkb = app.Workbooks.Open (@"C:\Users\Daniel\Desktop\a.xlsx");
                Excel.Range rvalue = app.get_Range ("A2");
                rvalue.Value2 = a.SumaDepusa;

            } catch (Exception e) {

                MessageBox.Show ("Eroare: " + e);

            }
        }

    }

}

1 个答案:

答案 0 :(得分:0)

这对我来说很混乱,我不知道您要达到什么目标。

这是我想您正在尝试做的。 我实现了一个从文本框中获取值的类,并在单击按钮时运行Open()方法。此方法创建工作表并将值插入“ A [row]”

using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public decimal SumaDepusa;
        public Excel.Worksheet worksheet;
        public int row = 1;

        public Form1()
        {
            InitializeComponent();
            var app = new Excel.Application
            {
                Visible = true
            };

            app.Workbooks.Add();
            worksheet = (Excel.Worksheet)app.ActiveSheet;
        }

        public void Open()
        {
            try
            {
                if (decimal.TryParse(textBox1.Text, out var decimalParsed))
                {
                    SumaDepusa = decimalParsed;
                    worksheet.Cells[row, "A"] = SumaDepusa;
                }
                else
                {
                    MessageBox.Show($"Cannot parse: {textBox1.Text}");
                }
            }
            catch (Exception e)
            {

                MessageBox.Show($"Error: {e}");

            }
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            Open();
            row++;
        }
    }
}

该方法在程序运行时确实会打开一个excel工作表,因此如果不存在,则需要找到一种方法写入excel工作表,如果不创建一个新方法。将需要其他逻辑来使这项工作更好。但举例来说,为了获得其价值。