[.Net] Export Excel : Copier coller

Signaler
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
-
Messages postés
213
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
1 avril 2009
-
Bonjour,



ma question est simple : est-il possible de copier coller des cellules
d'un document excel dans d'autres cellules de ce meme document Excel
via .net (je sais exporter mes données, mais j'aimerais me servir d'un
"modele de format de cellule" pour l'export de certaines données ...
c'est pour ca que je pensais à un copier coller...)

Question subsidiaire : est-il possible, lors de ce copier coller, de
copier non seulement le style (police, gras/italique/souligné, couleur
etc.) mais également la "structure" (si par exemple on copie une
cellule qui fusionne deux cellules dans la case A10, est-ce que la case
A11 sera bien fusionnée ?)



Merci d'avance ^_^

2 réponses

Messages postés
8
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
30 août 2006

Bon, je vais ressutier un vieux truc là, mais ça peut servir au suivant... (de là où Google nous conduit ;-)
ce code permet la copie de zone de sélection Excel, mais bon il y a surement mieux, et dans ce cas je suis preneur !



Excel.Range oColumns, dColumns;
oColumns = xlFeuill1.get_Range(xlFeuill1.Cells[curseur, 2], xlFeuill1.Cells[curseur + 9, 3]);
oColumns.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, System.Reflection.Missing.Value);
xlFeuill1.get_Range(xlFeuill1.Cells[curseur, 2], xlFeuill1.Cells[curseur, 3]).Merge(System.Reflection.Missing.Value);
xlFeuill1.get_Range(xlFeuill1.Cells[curseur + 9, 2], xlFeuill1.Cells[curseur + 9, 3]).Merge(System.Reflection.Missing.Value);
oColumns = xlFeuill1.get_Range(xlFeuill1.Cells[curseur, 4], xlFeuill1.Cells[curseur + 9, 5]);
dColumns = xlFeuill1.get_Range(xlFeuill1.Cells[curseur, 2], xlFeuill1.Cells[curseur + 9, 3]);
oColumns.Copy(dColumns);
xlFeuill1.get_Range(xlFeuill1.Cells[curseur, 2], xlFeuill1.Cells[curseur, 2]).Value2 = row[0];
xlFeuill1.get_Range(xlFeuill1.Cells[curseur + 1, 2], xlFeuill1.Cells[curseur + 1, 2]).Value2 = "Taux";
xlFeuill1.get_Range(xlFeuill1.Cells[curseur + 1, 3], xlFeuill1.Cells[curseur + 1, 3]).Value2 = "Nb cellules";



<sub>

5ebleu</sub>
Messages postés
213
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
1 avril 2009

bonjour, je suis novice en c# mais j'ai ecris mon programme et je veux inserer un code d'export vers excel comment y faire?


voici mon code



using



System;


using



System.Collections.Generic;


using



System.ComponentModel;


using



System.Data;


using



System.Drawing;


using



System.Text;


using



System.Windows.Forms;


using



System.Collections;


using



System.IO;


using



System.Data.SqlClient;


using



System.Data.Odbc; 



namespace



projet1{


public



partial



class



Form1
:

Form

{







//string myQuery ="insert into rapport(dat_debut,heur_debut,Nom_module,managedobjectinstance,type_alarme,dat_fin,heur_fin,criticite)VALUES ('''+colonne[i]+''','''+colonne1[i]+''','''+colonne2[i]+''','''+colonne3[i]+''','''+colonne4[i]+''','''+colonne5[i]+''','''+colonne6[i]+''','''+colonne7[i]+''');";






StreamWriter
sw =

null
;


ArrayList
tab_list =

new



ArrayList
();


ArrayList
cont_tab =

new



ArrayList
();


ArrayList
tab_nonfin =

new



ArrayList
();


ArrayList
colonne =

new



ArrayList
();

// contient date de debut






ArrayList
colonne1 =

new



ArrayList
();

// contient heure de debut






ArrayList
colonne2 =

new



ArrayList
();

//contient le nom du module






ArrayList
colonne3 =

new



ArrayList
();

// contient le managedobjectinstance






ArrayList
colonne4 =

new



ArrayList
();

// contient event type






ArrayList
colonne5 =

new



ArrayList
();

//date de fin






ArrayList
colonne6 =

new



ArrayList
();

//heure de fin






ArrayList
colonne7 =

new



ArrayList
();

//criticité






ArrayList
tableau =

new



ArrayList
();

//date de debut alarme active






ArrayList
tableau1 =

new



ArrayList
();

//heure de debut alarme active






ArrayList
tableau2 =

new



ArrayList
();

//nom du module alarme active






ArrayList
tableau3 =

new



ArrayList
();

//managemenyobjectinstance






ArrayList
tableau4 =

new



ArrayList
();

// type alarme active






ArrayList
tableau5 =

new



ArrayList
();

//criticite alarme active






string
[] tab;


string
[] tab1;


string
[] tab2;


string
table1;


string
table2;


string
Line;


string
path =

@"C:\Documents and Settings\Administrateur\Bureau\harris.txt"
;

//modif






string
[] case1;


string
[] case2;


int
a;


public
Form1(){

InitializeComponent();

}


private



void
button1_Click(

object
sender,

EventArgs
e){


SqlConnection
connection =

new



SqlConnection
(

"Database=Alarme;Data Source=localhost;Integrated Security=SSPI;"
); 


using
(

StreamReader
sr =

File
.OpenText(path)){


while
((Line = sr.ReadLine()) !=

null
){


if
(Line !=

""
)

// supprime les espaces vide entre les espaces vides entre les lignes puis les range dans une table dynamique

{


tab_list.Add(Line);


}


}







for
(

int
i = 0; i < tab_list.Count; i++)

// commence a lire les lets de la table

{







if
(tab_list[i].ToString().Contains(

"MINOR"
))

// verifie si la tabe contient le mot MINOR

{


case1 = tab_list[i].ToString().Split(




' '
);

// split selon le caractère espace puis range dans une table

table1 = case1[2];




// range la deuxième valeur des éléments decoupés afin de verifier la correspondance avec celle de l'alarme de fin

a = i;




//determine la position du pointeur dans les lignes






do

{




// recherche de la fin de l'alarme

a = a + 1;




// incrémente le pointeur afin d'indexer la ligne suivant celle d'ou le debut de l'alarme a été declenché









if
(a < tab_list.Count)

// verifie si l'index ne se trouve pas en dehors de la limite du tableau

{







if
(tab_list[a].ToString().Contains(

"CLEARED"
))

// verifie si la table contient le mot Cleared qui marque la fin des alarmes

{


case2 = tab_list[a].ToString().Split(




' '
);

// split selon le caractère espace puis range dans une table

table2 = case2[2];




// range la deuxième valeurs Des éléments decoupés dans une table afin de verifier la correspondance avec celle de l'alarme de debut

}


}







else
{

goto
sortir; }

// s'il n'y a pas de fin de l'alarme en cours se deplacer jusqu'a l'emplacement sortir pour afficher l'alarme

}




while
(table2 != table1);

// verife si l'alarme en cours de verification admet une fin 



tab = case1[1].Split(




' '
);tab1 = case1[2].Split(


' '
);tab2 = case2[1].Split(


' '
);System.


Console
.WriteLine(case1[0] +

" "
+ tab[0] +

" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ tab2[0] +

" "
+ tab2[1] +

" "
+ case1[5]);

// affiche les dates de debut et de fin d'alarme

cont_tab.Add(case1[0] +




" "
+ tab[0] +

" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ tab2[0] +

" "
+ tab2[1] +

" "
+ case1[5]);

// affiche les dates de debut et de fin d'alarme

colonne.Add(case1[0]);




// contient le type d'alarme

colonne1.Add(tab[0]);




//contient la date de debut

colonne2.Add(tab[1]);




//contient l'heure de debut

colonne3.Add(tab1[0]);




//contient le nom du module

colonne4.Add(tab1[1]);




//contient le managedobject

colonne5.Add(tab2[0]);




// contient la date de fin

colonne6.Add(tab2[1]);




//contient l'heure de fin

colonne7.Add(case1[5]);




//contient la criticite 



case1[0] =




""
;case1[1] =


""
;case1[2] =


""
;case1[5] =


""


sortir:

System.


Console
.WriteLine(case1[0] +

" "
+ case1[1] +

" "
+ case1[2] +

" "
+ case1[5]);

// affiche les alarmes dont les fins ne sont pas connues

tab_nonfin.Add(tab[0] +




" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ case1[5]);

// ajout a la table

tableau.Add(tab[0]);


tableau1.Add(tab[1]);


tableau2.Add(tab1[0]);


tableau3.Add(tab1[1]);


tableau4.Add(case1[0]);














}


 


 


 


 







if
(tab_list[i].ToString().Contains(

"MAJOR"
))

// verifie si la tabe contient le mot MAJOR

{


case1 = tab_list[i].ToString().Split(




' '
);

// split selon le caractère espace puis range dans une table

table1 = case1[2];




// range la deuxième valeur des éléments decoupés afin de verifier la correspondance avec celle de l'alarme de fin

a = i;




//determine la position du pointeur dans les lignes






do

{




// recherche de la fin de l'alarme

a = a + 1;




// incrémentele pointeur afin d'indexer la ligne suivant celle d'ou le debut de l'alarme a été declenché









if
(a < tab_list.Count)

// verifie si l'index ne se trouve pas en dehors de la limite du tableau

{







if
(tab_list[a].ToString().Contains(

"CLEARED"
))

// verifie si la table contient le mot Cleared qui marque la fin des alarmes

{


case2 = tab_list[i].ToString().Split(




' '
);

// split selon le caractère espace puis range dans une table

table2 = case2[2];




// range la deuxième valeurs Des éléments decoupés dans une table afin de verifier la correspondance avec celle de l'alarme de debut

}


}







else
{

goto
sortir1; }

// s'il n'y a pas de fin de l'alarme en cours se deplacer jusqu'a l'emplacement sortir pour afficher l'alarme

}




while
(table2 != table1);

// verife si l'alarme en cours de verification admet une fin

tab = case1[1].Split(




' '
);tab1 = case1[2].Split(


' '
);tab2 = case2[1].Split(


' '
);System.


Console
.WriteLine(case1[0] +

" "
+ tab[0] +

" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ tab2[0] +

" "
+ tab2[1] +

" "
+ case1[5]);

// affiche les dates de debut et de fin d'alarme

cont_tab.Add(case1[0] +




" "
+ tab[0] +

" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ tab2[0] +

" "
+ tab2[1] +

" "
+ case1[5]);

// affiche les dates de debut et de fin d'alarme

colonne.Add(case1[0]);




// contient la date de debut

colonne1.Add(tab[0]);




//contient l'heure de debut

colonne2.Add(tab[1]);




//contient le nom du module

colonne3.Add(tab1[0]);




//contient le managedobjectinstance

colonne4.Add(tab1[1]);




//contient le event type

colonne5.Add(tab2[0]);




// contient la date de fin

colonne6.Add(tab2[1]);




//contient l'heure de fin

colonne7.Add(case1[5]);




//contient la criticite

case1[0] =




""
;case1[1] =


""
;case1[2] =


""
;case1[5] =


""
;sortir1:

System.


Console
.WriteLine(case1[0] +

" "
+ case1[1] +

" "
+ case1[2] +

" "
+ case1[5]);

// affiche les alarmes dont les fins ne sont pas connues

tab_nonfin.Add( tab[0] +




" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ tab2[1] +

" "
+ case1[5]);

//

tableau.Add(tab[0]);


tableau1.Add(tab[1]);


tableau2.Add(tab1[0]);


tableau3.Add(tab1[1]);


tableau4.Add(case1[0]);








}


 


 


 


 


 







if
(tab_list[i].ToString().Contains(

"CRITICAL"
))

// verifie si la tabe contient le mot MAJOR

{


case1 = tab_list[i].ToString().Split(




' '
);

// split selon le caractère espace puis range dans une table

table1 = case1[2];




// range la deuxième valeur des éléments decoupés afin de verifier la correspondance avec celle de l'alarme de fin

a = i;




//determine la position du pointeur dans les lignes






do

{




// recherche de la fin de l'alarme

a = a + 1;




// incrémentele pointeur afin d'indexer la ligne suivant celle d'ou le debut de l'alarme a été declenché






if
(a < tab_list.Count)

// verifie si l'index ne se trouve pas en dehors de la limite du tableau

{







if
(tab_list[a].ToString().Contains(

"CLEARED"
))

// verifie si la table contient le mot Cleared qui marque la fin des alarmes

{


case2 = tab_list[a].ToString().Split(




' '
);

// split selon le caractère espace puis range dans une table

table2 = case2[2];




// range la deuxième valeurs Des éléments decoupés dans une table afin de verifier la correspondance avec celle de l'alarme de debut

}


}







else
{

goto
sortir2; }

// s'il n'y a pas de fin de l'alarme en cours se deplacer jusqu'a l'emplacement sortir pour afficher l'alarme

}




while
(table2 != table1);

// verife si l'alarme en cours de verification admet une fin 



tab = case1[1].Split(




' '
);tab1 = case1[2].Split(


' '
);tab2 = case2[1].Split(


' '
);System.


Console
.WriteLine(case1[0] +

" "
+ tab[0] +

" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ tab2[0] +

" "
+ tab2[1] +

" "
+ case1[5]);

// affiche les dates de debut et de fin d'alarme

cont_tab.Add(case1[0] +




" "
+ tab[0] +

" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ tab2[0] +

" "
+ tab2[1] +

" "
+ case1[5]);

// affiche les dates de debut et de fin d'alarme

colonne.Add(case1[0]);




// contient le type d'alarme

colonne1.Add(tab[0]);




//contient la date de debut

colonne2.Add(tab[1]);




//contient l'heure de debut

colonne3.Add(tab1[0]);




//contient le nom du module

colonne4.Add(tab1[1]);




//contient le managedobject

colonne5.Add(tab2[0]);




// contient la date de fin

colonne6.Add(tab2[1]);




//contient l'heure de fin

colonne7.Add(case1[5]);




//contient la criticite 



case1[0] =




""
;case1[1] =


""
;case1[2] =


""
;case1[5] =


""


sortir2:

System.


Console
.WriteLine(case1[0] +

" "
+ case1[1] +

" "
+ case1[2] +

" "
+ case1[5]);

// affiche les alarmes dont les fins ne sont pas connues

tab_nonfin.Add( tab[0] +




" "
+ tab[1] +

" "
+ tab1[0] +

" "
+ tab1[1] +

" "
+ case1[5]);

// ajout a la table

tableau.Add(tab[0]);


tableau1.Add(tab[1]);


tableau2.Add(tab1[0]);


tableau3.Add(tab1[1]);


tableau4.Add(case1[0]);





}


}


}


 


 







/*___________________________________________________________________________________________________________________________________________________________________________________________________________________________________*/






string
myQuery =

""
;


for
(

int
i = 0; i < cont_tab.Count; i++){


try

{


myQuery =




"insert into rapport(dat_debut,heur_debut,Nom_module,managedobjectinstance,type_alarme,dat_fin,heur_fin,criticite)VALUES ('"
+ colonne1[i].ToString() +

"','"
+ colonne2[i].ToString() +

"','"
+ colonne3[i].ToString() +

"','"
+ colonne4[i].ToString() +

"','"
+ colonne[i].ToString() +

"','"
+ colonne5[i].ToString() +

"','"
+ colonne6[i].ToString() +

"','"
+ colonne7[i].ToString() +

"')"
;


SqlCommand
myCommand =

new



SqlCommand
(myQuery);

myCommand.Connection = connection;

myCommand.Connection.Close();

myCommand.Connection.Open();

myCommand.ExecuteNonQuery();


//myCommand.Dispose();

}







catch
(

SqlException
ex){

System.Diagnostics.


Debug
.WriteLine(ex.ToString());sw.WriteLine(myQuery);

}

 

}


/*__________________________________________table alarme active___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________*/






for
(

int
i = 0; i < tab_nonfin.Count; i++){


try

{


myQuery =




"insert into Alarm(dat_debut,heure_debut,Nom_module,managedobjectinstance,type_alarme)VALUES ('"
+ tableau[i].ToString() +

"','"
+ tableau1[i].ToString() +

"','"
+ tableau2[i].ToString() +

"','"
+ tableau3[i].ToString() +

"','"
+ tableau4[i].ToString() +

"')"
;


SqlCommand
myCommand =

new



SqlCommand
(myQuery); 

myCommand.Connection = connection;

myCommand.Connection.Close();

myCommand.Connection.Open();

myCommand.ExecuteNonQuery();

 


//myCommand.Dispose();

}







catch
(

SqlException
ex){

System.Diagnostics.


Debug
.WriteLine(ex.ToString());sw.WriteLine(myQuery);

}

}

 

}


private



void
dateTimePicker1_ValueChanged(

object
sender,

EventArgs
e){

}


private



void
checkBox1_CheckedChanged(

object
sender,

EventArgs
e){


string
myQuery =

""
;


SqlConnection
connection =

new



SqlConnection
(

"Database=Alarme;Data Source=localhost;Integrated Security=SSPI;"
);


try

{


myQuery "SELECT *, rapport.*, type_alarme AS Expr5, dat_fin AS Expr6, heur_fin AS Expr7, dat_debut AS Expr8, heur_debut AS Expr9 FROM rapport WHERE (Nom_module 'equipmentAlarm')"
;


SqlCommand
myCommand =

new



SqlCommand
(myQuery); 

myCommand.Connection = connection;

myCommand.Connection.Close();

myCommand.Connection.Open();

myCommand.ExecuteNonQuery();

 


//myCommand.Dispose();

}







catch
(

SqlException
ex){

System.Diagnostics.


Debug
.WriteLine(ex.ToString());sw.WriteLine(myQuery);

}

 

}


private



void
ok(

object
sender,

EventArgs
e){

}


public



bool
Export(

string
str,

DataTable
dt)

}

}

 

 

 

 

 

 

a quel emplacement on isert l'export et comment le code est ecrit?