J'essaie de convertir du code VBA en C #. Je suis nouveau en C #. J'essaie actuellement d'ouvrir un fichier Excel à partir d'un dossier. S'il n'existe pas, créez-le. J'essaie quelque chose comme ce qui suit. Comment puis-je le faire fonctionner?
Excel.Application objexcel;
Excel.Workbook wbexcel;
bool wbexists;
Excel.Worksheet objsht;
Excel.Range objrange;
objexcel = new Excel.Application();
if (Directory("C:\\csharp\\error report1.xls") = "")
{
wbexcel.NewSheet();
}
else
{
wbexcel.Open("C:\\csharp\\error report1.xls");
objsht = ("sheet1");
}
objsht.Activate();
Vous devez avoir installé Microsoft Visual Studio Tools pour Office (VSTO).
VSTO peut être sélectionné dans le programme d'installation de Visual Studio sous Workloads> Web et Cloud> Développement Office/SharePoint.
Après cela, créez un projet .NET commun et ajoutez la référence à Microsoft.Office.Interop.Excel
via la boîte de dialogue 'Ajouter une référence ...> Assemblées'.
Application Excel = new Application();
Workbook wb = Excel.Workbooks.Open(path);
Missing.Value
est une structure de réflexion spéciale pour le remplacement inutile de paramètres
Dans les versions plus récentes, la référence Assembly requise est appelée Microsoft Excel 16.0 Object Library
. Si vous ne disposez pas de la dernière version, vous pouvez avoir Microsoft Excel 15.0 Object Library
, ou une version plus ancienne, mais il s’agit du même processus à inclure.
FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
//file doesn't exist
}
private void btnChoose2_Click(object sender, EventArgs e)
{
OpenFileDialog openfileDialog1 = new OpenFileDialog();
if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.btnChoose2.Text = openfileDialog1.FileName;
String filename = DialogResult.ToString();
var excelApp = new Excel.Application();
excelApp.Visible = true;
excelApp.Workbooks.Open(btnChoose2.Text);
}
}
ouvrir le fichier Excel
System.Diagnostics.Process.Start(@"c:\document.xls");
Importations
using Excel= Microsoft.Office.Interop.Excel;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
Voici le code pour ouvrir une feuille Excel en utilisant C #.
Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook wbv = Excel.Workbooks.Open("C:\\YourExcelSheet.xlsx");
Microsoft.Office.Interop.Excel.Worksheet wx = Excel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
wbv.Close(true, Type.Missing, Type.Missing);
Excel.Quit();
Voici une vidéo expliquant comment ouvrir une feuille de calcul Excel à l'aide de C # https://www.youtube.com/watch?v=O5Dnv0tfGv4
tu devrais ouvrir comme ça
Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
source: http://csharp.net-informations.com/Excel/csharp-open-Excel.htm
ruden
Pour ouvrir un fichier, essayez ceci:
objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls",
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing,missing, missing);
Vous devez fournir ces arguments stupides "manquants". Si vous écriviez le même code dans VB.Net, vous n'en auriez pas eu besoin, mais vous ne pouvez pas les éviter en C #.
Il est plus facile de vous aider si vous dites également ce qui ne va pas ou ce qui échoue lorsque vous l'exécutez.
Mais d'un coup d'œil, vous avez confondu plusieurs choses.
Ce qui suit ne fonctionne pas à cause de quelques problèmes.
if (Directory("C:\\csharp\\error report1.xls") = "")
Ce que vous essayez de faire, c'est créer un nouvel objet Annuaire qui doit pointer sur un fichier, puis vérifier s'il y a des erreurs.
Ce que vous êtes en train de faire, c'est d'appeler une fonction nommée Directory (), puis d'attribuer une chaîne au résultat. Cela ne fonctionnera pas car 1/vous n'avez pas de fonction nommée Répertoire (string str) et vous ne pouvez pas affecter le résultat à partir d'une fonction (vous ne pouvez affecter qu'une valeur à une variable).
Ce que vous devez faire (pour cette ligne au moins) est le suivant
FileInfo fi = new FileInfo("C:\\csharp\\error report1.xls");
if(!fi.Exists)
{
// Create the xl file here
}
else
{
// Open file here
}
Pour savoir pourquoi le code Excel ne fonctionne pas, vous devez consulter la documentation de la bibliothèque Excel que Google devrait pouvoir vous fournir.
Microsoft.Office.Interop.Excel.Application excapp;
excapp = new Microsoft.Office.Interop.Excel.Application();
object misval=System.Reflection.Missing.Value;
Workbook wrkbuk = new Workbook();
Worksheet wrksht = new Worksheet();
wrkbuk = excapp.Workbooks._Open(@"C:\Users\...\..._template_v1.0.xlsx", misval, misval,
misval, misval, misval, misval, misval, misval, misval, misval, misval, misval);
wrksht = (Microsoft.Office.Interop.Excel.Worksheet)wrkbuk.Worksheets.get_Item(2);
Est-ce une application commerciale ou un logiciel amateur/open source?
Je pose la question parce que, selon mon expérience, toutes les solutions de traitement gratuites .NET Excel posent de graves problèmes, pour différentes raisons. Pour les choses d'amateur, je finis généralement par porter jExcelApi de Java vers C # et l'utiliser.
Mais s'il s'agit d'une application commerciale, vous feriez mieux d'acheter une bibliothèque tierce, telle que Aspose.Cells . Croyez-moi, cela en vaut vraiment la peine, car cela fait économiser beaucoup de temps et que le temps n'est pas gratuit.
Code:
private void button1_Click(object sender, EventArgs e)
{
textBox1.Enabled=false;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excell File |*.xlsx;*,xlsx";
if (ofd.ShowDialog() == DialogResult.OK)
{
string extn = Path.GetExtension(ofd.FileName);
if (extn.Equals(".xls") || extn.Equals(".xlsx"))
{
filename = ofd.FileName;
if (filename != "")
{
try
{
string excelfilename = Path.GetFileName(filename);
}
catch (Exception ew)
{
MessageBox.Show("Errror:" + ew.ToString());
}
}
}
}
Pour éditer des fichiers Excel à partir d’une application C #, j’ai récemment commencé à utiliser NPOI . J'en suis très satisfait.