Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - C#
Forum - C# / VB.NET - C# - Pagina 3

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
rangogni (Normal User)
Newbie


Messaggi: 7
Iscritto: 07/11/2023

Segnala al moderatore
Postato alle 10:56
Martedì, 02/04/2024
Ok ammetto di non essere un esperto di C# ma non mi sento sicuramente un imbranato di prima categoria nell'uso della programmazione per ricevere tutti le osservazioni fatte che comunque accetto e ringrazio. In ogni caso in scrittura del codice non mi sottolinea nulla e in compilazione non mi da ne errori ne avvisi. Ad ogni modo allego i file completi sia del Form1 che quello del Form2 e infine il messaggio di errore completo. Spero ne capiate più di me. Cordiali saluti
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;

namespace Apri_File_Excel
{
    public partial class Form1 : Form
    {
        public static Excel.Application xApp; // rende globale
        public static Excel.Workbook wb;      // rende globale
        public static Excel.Worksheet ws;     // rende globale
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            {
                //percorso contiene l'indirizzo dove si trova il file libro soci del corrente anno
                string percorso = "D:\\Linguaggio C#\\prova.xlsm";

                //Questo è il primo modo usato per aprire il file excel
                Excel.Application xApp;
                Excel.Workbook wb;      //Definisco come chiamare il file
                Excel.Worksheet ws;     //Definisco come chiamare foglio
                //Excel.Range xRange;   //Al momento non lo uso
                object misValue = System.Reflection.Missing.Value;

                // Avvia Excel.
                xApp = new Excel.Application();//Definisco l'applicazione di Excel

                //wb sta per workbook cioè il file excel
                //ws sta per worsheet cioè per il foglio del file excel

                wb = (Excel.Workbook)(xApp.Workbooks.Add(percorso));   //Apre il file excel
                xApp.Visible = true;
                ((Excel.Worksheet)wb.Sheets[1]).Select(Type.Missing);  //Seleziono il foglio(Soci)
                ws = (Excel.Worksheet)wb.ActiveSheet;                  //Attivo il foglio selezionato

                //posso accederre alle celle del file ad es
                ws.Cells[7, 2] = "prova";

                //Per passare al secondo form uso un Button

                 //Per salvare e chiudere il file
                //wb.Save();//Salva il file Excel
                //wb.Close();//Chiude il file Excel

            }
        }

        private void btnApriForm2_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2();
            frm.Show();
            this.Hide();
        }
    }
}

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

namespace Apri_File_Excel
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {

            //string letto;
            //letto = Form1.ws.Cells[7, 1];
            Form1.ws.Cells[7, 3] = "prova";
        }
    }
}

Infine


rangogni ha allegato un file: Cattura.JPG (20773 bytes)
Clicca qui per guardare l'immagine


Rangogni Roberto
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1364
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 11:47
Martedì, 02/04/2024
Il codice tra i tag [ code ] è più leggibile.

Dichiari prima le variabili del foglio pubbliche e poi le ridichiari... Così facendo quelle pubbliche restano vuote.

Il tuo codice con le doppie dichiarazioni remmate:

Codice sorgente - presumibilmente C++

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Excel = Microsoft.Office.Interop.Excel;
  11. using System.IO;
  12.  
  13. namespace Apri_File_Excel
  14. {
  15.     public partial class Form1 : Form
  16.     {
  17.         public static Excel.Application xApp; // rende globale
  18.         public static Excel.Workbook wb;      // rende globale
  19.         public static Excel.Worksheet ws;     // rende globale
  20.         public Form1()
  21.         {
  22.             InitializeComponent();
  23.         }
  24.  
  25.         private void Form1_Load(object sender, EventArgs e)
  26.         {
  27.             {
  28.                 //percorso contiene l'indirizzo dove si trova il file libro soci del corrente anno
  29.                 string percorso = "D:\\Linguaggio C#\\prova.xlsm";
  30.  
  31.                 // Queste non le devi riinizializzare *******************
  32.                 // Excel.Application xApp;
  33.                 // Excel.Workbook wb;      //Definisco come chiamare il file
  34.                 // Excel.Worksheet ws;     //Definisco come chiamare foglio
  35.                 // *********************************************
  36.  
  37.                 //Excel.Range xRange;   //Al momento non lo uso
  38.                 object misValue = System.Reflection.Missing.Value;
  39.  
  40.                 // Avvia Excel.
  41.                 xApp = new Excel.Application();//Definisco l'applicazione di Excel
  42.  
  43.                 //wb sta per workbook cioè il file excel
  44.                 //ws sta per worsheet cioè per il foglio del file excel
  45.  
  46.                 wb = (Excel.Workbook)(xApp.Workbooks.Add(percorso));   //Apre il file excel
  47.                 xApp.Visible = true;
  48.                 ((Excel.Worksheet)wb.Sheets[1]).Select(Type.Missing);  //Seleziono il foglio(Soci)
  49.                 ws = (Excel.Worksheet)wb.ActiveSheet;                  //Attivo il foglio selezionato
  50.  
  51.                 //posso accederre alle celle del file ad es
  52.                 ws.Cells[7, 2] = "prova";
  53.  
  54.                 //Per passare al secondo form uso un Button
  55.  
  56.                  //Per salvare e chiudere il file
  57.                 //wb.Save();//Salva il file Excel
  58.                 //wb.Close();//Chiude il file Excel
  59.  
  60.             }
  61.         }
  62.  
  63.         private void btnApriForm2_Click(object sender, EventArgs e)
  64.         {
  65.             Form2 frm = new Form2();
  66.             frm.Show();
  67.             this.Hide();
  68.         }
  69.     }
  70. }



Se riguardi il mio post di Giovedì 28/03/2024 alle 13:45, già era così...

Ultima modifica effettuata da Carlo il 02/04/2024 alle 12:24


in programmazione tutto è permesso
PM Quote
Avatar
rangogni (Normal User)
Newbie


Messaggi: 7
Iscritto: 07/11/2023

Segnala al moderatore
Postato alle 16:31
Martedì, 02/04/2024
Rispondo a Carlo: in compilazione non mi dava nessun errore e prova non era sottolineato in rosso ne dava neanche un avviso in compilazione. Comunque sono grato delle critiche che in ogni caso sono sempre costruttive (lo dico per esperienza personale).
Ad ogni modo con l'ultimo aiuto ho trovato l'errore e adesso funziona che è una meraviglia. L'errore era nell'ordine in cui si gestiva l'apertura del file cioè l'istruzione
object misValue = System.Reflection.Missing.Value;
andava messa come prima istruzione e non dopo aver aperto il file. Trovo strano che ne in compilazione ne in esecuzione il sistema non mi facesse notare l'errore. In ogni caso, Grazie a voi ed alle mie prove sono riuscito a risolvere il problema.
Cordiali saluti e buon lavoro a tutti


Rangogni Roberto
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:35
Martedì, 02/04/2024
Roberto... sapere come si dichiarano e utilizzano le variabili (membri di classe in questo caso)  è l'abc dell'abc della programmazione.

Quando ti dico che devi studiare, dico di farlo PRIMA di provare a scrivere codice. Adesso non riesci neanche a fare copia incolla e capire il minimo errore che si presenta. Non è cattiveria, è realtà.

Fermati e studia dalle basi prima di fare altro!

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1364
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 17:53
Martedì, 02/04/2024
Testo quotato

Postato originariamente da rangogni:

L'errore era nell'ordine in cui si gestiva l'apertura del file cioè l'istruzione
object misValue = System.Reflection.Missing.Value;
andava messa come prima istruzione e non dopo aver aperto il file. Trovo strano che ne in compilazione ne in esecuzione il sistema non mi facesse notare l'errore. In ogni caso, Grazie a voi ed alle mie prove sono riuscito a risolvere il problema.
Cordiali saluti e buon lavoro a tutti


L'errore è che hai copiato male (tu le chiami prove), non devi ridichiarare le variabili (membri di classe, come precisa nessuno). Non è che object misValue, lo devi mettere prima o dopo le dichiarazioni:

Excel.Application xApp;
Excel.Workbook wb;    
Excel.Worksheet ws;    

dentro a:  private void Form1_Load(object sender, EventArgs e) quelle dichiarzioni non ci devono essere per niente.
Come ti avevo fatto vedere sul codice d'esempio, sul pogetto che ti ho inviato e in ultimo ti ho ripostato il codice che avevi copiato male dove ti ho remmato le righe che non dovevi mettere.

Ultima modifica effettuata da Carlo il 02/04/2024 alle 23:42


in programmazione tutto è permesso
PM Quote
Avatar
Totino1956 (Normal User)
Newbie


Messaggi: 2
Iscritto: 04/07/2010

Segnala al moderatore
Postato alle 18:10
Sabato, 04/05/2024
Ho scaricato dal sito ExcelTraForm, una procedura che consente da Visual Studio C# di
leggere e scrivere un file Excel con l'impostazione
using Excel = Microsoft.Office.Interop.Excel che funziona.
Ma se provo a utilizzare l'impostazione:
using Excel = Microsoft.Office.Interop.Excel
su un nuovo progetto Visual Studio mi da errore dichiarando che Office è sconosciuto
nello spazio dei nomi e manca un riferimento all'Assembly.
Ho provato con la versione 2017 e 2022 ma permane l'errore,
mentre ExcelTraForm funziona sempre!
C'è un correttivo che potreste segnalarmi?
Grazie!!!
Totino







PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:16
Sabato, 04/05/2024
Ma cosa c'entra questo tuo post qui Totino?

Un minimo di regolamento lo vogliamo seguire?

Dovresti aprire una tua NUOVA discussione con OPPORTUNO titolo e non accodarti ad altre.

Fatto questo sicuramente potresti avere una facile risposta al tuo quesito.

Ultima modifica effettuata da il 04/05/2024 alle 20:27
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1364
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 1:36
Domenica, 05/05/2024
Testo quotato

Postato originariamente da Totino1956:
se provo a utilizzare l'impostazione:
using Excel = Microsoft.Office.Interop.Excel
su un nuovo progetto Visual Studio mi da errore dichiarando che Office è sconosciuto
nello spazio dei nomi e manca un riferimento all'Assembly.



Per utilizzare il componente COM: Microsoft Office 12.0 Object Library dopo aver aperto un nuovo progetto, vai sulla finestra in alto a destra: Esplora soluzioni, con il tasto destro clicca su: Riferimenti, nel menù che si apre scegli: Aggiungi riferimento; a questo punto si apre una nuova finestra dal titolo Gestione riferimenti - tuoprogramma, scegli a sinistra COM, scorri tutto l'elenco fino a trovare: Microsoft Office 12.0 Object Library (potresti avere una versione diversa), ceccala comunque, clicca Ok e tra i Riferimenti deve apparire: Microsoft.Office.Interop.Excel.
Finito, non dovresti più avere errore..

Se hai ancora problemi apri una tua domanda specifica.

Ultima modifica effettuata da Carlo il 05/05/2024 alle 1:39


in programmazione tutto è permesso
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo