Désolé, si cela a été répondu, j'ai cherché pendant des heures, et je suis également nouveau à la programmation.C# Comment ajouter des valeurs spécifiées à la prochaine ligne disponible d'une feuille de calcul Excel sous des noms de colonnes spécifiés en utilisant OleDbCommand
Actuellement, j'ai 15 lignes avec des données dans ma feuille de calcul Excel, le code ci-dessous insérer les valeurs dans la ligne 40, et en appuyant sur le bouton d'exportation à nouveau insérera une nouvelle ligne avec les valeurs dans la ligne 41 etc ...
Ma question est comment puis-je l'obtenir pour insérer une nouvelle ligne avec les valeurs directement en dessous de mes données existantes (ligne 16) et ainsi de suite avec chaque clic sur le bouton d'exportation. Je cherche à garder la procédure de commande.
private void exportBtn_Click(object sender, EventArgs e)
{
OleDbCommand newRow = new OleDbCommand();
newRow.CommandType = CommandType.Text;
newRow.CommandText = "INSERT INTO [Sheet1$] ([Company:], [County:], [State:], [Notes:], [User:], [Email:], [Username:], [Password:], [SMMM PWD:], [CAD:]) VALUES (1,2,3,4,5,6,7,8,9,10)";
newRow.Connection = connectionExl;
connectionExl.Open();
newRow.ExecuteNonQuery();
connectionExl.Close();
}
MISE À JOUR
Jusqu'à présent, je peux obtenir l'int de la ligne suivante disponible, Maintenant, je veux ajouter des valeurs dans les colonnes spécifiées à cette ligne disponibles.
Pour faciliter disons que j'ai 2 colonnes nommées (colonne1, colonne2) et les valeurs que je veux mettre en sont respectivement (1,2)
Comment puis-je faire?
Mon code à ce jour:
private void exportBtn_Click(object sender, EventArgs e)
{
Excel.Application xlApp = StartExcel();
//Excel.Application xlApp = new Excel.Application(); // instead of above line you can open new instance of Excel application and at the end of procedure xlApp.Application.Quit();
Excel.Workbook myBook = xlApp.Workbooks.Open(@"C:\Users\path\path\excel.xlsx");
Excel.Worksheet mySheet = myBook.Sheets[1];
xlApp.Visible = true; // by default excel is invisible leave it invisible if you just like to add data and save it (also use new instance of Excel in this case)
int lastRow = mySheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row;
int openRow = lastRow + 1;
mySheet.Cells[openRow, 1].Value = "your value for column A";
mySheet.Cells[openRow, 2].Value = "your value for column B";
myBook.Save();
myBook.Close();
}
private static Excel.Application StartExcel() // would be better to make it public somewhere in your module
{
Excel.Application instance = null;
try { instance = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); }
catch (System.Runtime.InteropServices.COMException ex) { instance = new Excel.Application(); }
return instance;
}
Vous recherchez le [excel interop] (https://msdn.microsoft.com/fr-fr/library/microsoft.office.interop.excel.aspx) Familiarisez-vous avec les documents MSDN car ce sera votre single plus grande ressource. –