Hirdetés

Új hozzászólás Aktív témák

  • ubid

    őstag

    válasz sztanozs #3713 üzenetére

    nem.

    A kód a következő :

    BTN eseménye :
    private void ImportBtnClick(object sender, RoutedEventArgs e)
    {
    if (AutomationFactory.IsAvailable)
    {
    if (InitializeExcel())
    {
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "Excel workbook (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm|All files|*.*";
    openFileDialog.ShowDialog();

    FileInfo fileInfo = openFileDialog.File;

    if (fileInfo != null)
    {
    tbMessages.Text = "The processing may take several minutes. Please wait...\n";
    btnImporter.IsEnabled = false;

    DoBackGroundWork(fileInfo);

    }
    }
    else
    {
    MessageBox.Show("Excel is not available.");
    }
    }
    else
    {
    MessageBox.Show("Automation is not available.");
    }
    }

    Ez hívja ugye a DoBackGroundWork -öt :

    public FileInfo fileNameProperty { get; set; }
    private void DoBackGroundWork(FileInfo f)
    {
    BackgroundWorker worker = new BackgroundWorker();
    fileNameProperty = f;
    worker.WorkerReportsProgress = true;
    worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
    worker.RunWorkerAsync(fileNameProperty);
    worker.DoWork += new DoWorkEventHandler(worker_DoWork);
    worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);


    }

    void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    btnImporter.IsEnabled = true;
    }

    void worker_DoWork(object sender, DoWorkEventArgs e)
    {
    BackgroundWorker worker = sender as BackgroundWorker;
    int totalSteps = 30;
    FileInfo file = e.Argument as FileInfo;

    ProcessExcelSheet(file);
    for (int i = 1; i <= totalSteps; i++)
    {
    ///.......
    }

    }

    void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
    progressBar.Value = e.ProgressPercentage;
    }

    És ugye a ProcessExcelSheet dolgozik sokáig...
    Az pedig így néz ki :

    private void ProcessExcelSheet(FileInfo File)
    {
    Object missingValue = System.Reflection.Missing.Value;

    bool errorHappened = false;


    dynamic workbook = excel.Workbooks.Open(File.FullName);

    try
    {
    ...............

    [ Szerkesztve ]

    -.-

Új hozzászólás Aktív témák