Hallo,
ich bin gerade dabei Excel mit C# zu verknüpfen. Leider klappt das nicht so wie gewünscht...
Da ich in diesem Bereich überhaupt keine Ahnung habe, habe ich mich daran orientiert bzw. das versucht mal nachzubauen.
Wenn ich das Programm starte tut alles soweit. Aber wenn ich auf den Button klicke, kommt eine Fehlermeldung ("es ist mindestens ein Fehler aufgetreten") Diese Fehlermeldung kommt als Messagebox.
Visual Studio zeigt erstmal keinen Fehler an.
Wenn ich dann Haltepunkte setze bekomme ich zumindest mal eine Fehlermeldung angezeigt. Beim Sprung von Zeile 38 auf Zeile 39 (im verlinkten Artikel der Klasse Student) bzw im Code von mir Zeile 36 zu 37
Die Fehlermeldung wird hier ausgegeben (in der MainWindow.xaml.cs Klasse)
Spoiler anzeigen
Beim Auftreten des Fehlers steht bei "await": Erwartete Aufgabe gibt keinen Wert zurück.
Liegt das jetzt an meinem Pfad oder muss ich in Excel nochwas freigeben? - abgesehen von dem was im Artikel beschrieben wurde
Oder funktioniert das anders mit dem Office 365?
Der Treiber wurde auch installiert
Für jegliche Hilfe bin ich sehr dankbar!
ich bin gerade dabei Excel mit C# zu verknüpfen. Leider klappt das nicht so wie gewünscht...
Da ich in diesem Bereich überhaupt keine Ahnung habe, habe ich mich daran orientiert bzw. das versucht mal nachzubauen.
Wenn ich das Programm starte tut alles soweit. Aber wenn ich auf den Button klicke, kommt eine Fehlermeldung ("es ist mindestens ein Fehler aufgetreten") Diese Fehlermeldung kommt als Messagebox.
Visual Studio zeigt erstmal keinen Fehler an.
Wenn ich dann Haltepunkte setze bekomme ich zumindest mal eine Fehlermeldung angezeigt. Beim Sprung von Zeile 38 auf Zeile 39 (im verlinkten Artikel der Klasse Student) bzw im Code von mir Zeile 36 zu 37
Die Fehlermeldung wird hier ausgegeben (in der MainWindow.xaml.cs Klasse)
C#-Quellcode
- public class Student
- {
- public int StudentID { get; set; }
- public string Name { get; set; }
- public string Email { get; set; }
- public string Class { get; set; }
- public string Address { get; set; }
- }
- public class ExcelDataService
- {
- OleDbConnection Conn;
- OleDbCommand Cmd;
- public ExcelDataService()
- {
- string ExcelFilePath = @"D\:Mappe1.xlsx";
- string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFilePath + ";Extended Properties=Excel 12.0;Persist Security Info=True";
- Conn = new OleDbConnection(excelConnectionString);
- }
- public async Task<ObservableCollection<Student>> ReadRecordFromEXCELAsync()
- {
- ObservableCollection<Student> Students = new ObservableCollection<Student>();
- await Conn.OpenAsync();
- Cmd = new OleDbCommand();
- Cmd.Connection = Conn;
- Cmd.CommandText = "Select * from [Sheet1$]";
- var Reader = await Cmd.ExecuteReaderAsync();
- while (Reader.Read())
- {
- Students.Add(new Student()
- {
- StudentID = Convert.ToInt32(Reader["StudentID"]),
- Name = Reader["Name"].ToString(),
- Email = Reader["Email"].ToString(),
- Class = Reader["Class"].ToString(),
- Address = Reader["Address"].ToString()
- });
- }
- Reader.Close();
- Conn.Close();
- return Students;
- }
- public async Task<bool> ManageExcelRecordsAsync(Student stud)
- {
- bool IsSave = false;
- if (stud.StudentID != 0)
- {
- await Conn.OpenAsync();
- Cmd = new OleDbCommand();
- Cmd.Connection = Conn;
- Cmd.Parameters.AddWithValue("@StudentID", stud.StudentID);
- Cmd.Parameters.AddWithValue("@Name", stud.Name);
- Cmd.Parameters.AddWithValue("@Email", stud.Email);
- Cmd.Parameters.AddWithValue("@Class", stud.Class);
- Cmd.Parameters.AddWithValue("@Address", stud.Address);
- if (!IsStudentRecordExistAsync(stud).Result)
- {
- Cmd.CommandText = "Insert into [Sheet1$] values (@StudentID,@Name,@Email,@Class,@Address)";
- }
- else
- {
- Cmd.CommandText = "Update [Sheet1$] set StudentID=@StudentID,Name=@Name,Email=@Email,Class=@Class,Address=@Address where StudentID=@StudentID";
- }
- int result = await Cmd.ExecuteNonQueryAsync();
- if (result > 0)
- {
- IsSave = true;
- }
- Conn.Close();
- }
- return IsSave;
- }
- private async Task<bool> IsStudentRecordExistAsync(Student stud)
- {
- bool IsRecordExist = false;
- Cmd.CommandText = "Select * from [Sheet1$] where StudentId=@StudentID";
- var Reader = await Cmd.ExecuteReaderAsync();
- if (Reader.HasRows)
- {
- IsRecordExist = true;
- }
- Reader.Close();
- return IsRecordExist;
- }
- }
Beim Auftreten des Fehlers steht bei "await": Erwartete Aufgabe gibt keinen Wert zurück.
Liegt das jetzt an meinem Pfad oder muss ich in Excel nochwas freigeben? - abgesehen von dem was im Artikel beschrieben wurde
Oder funktioniert das anders mit dem Office 365?
Der Treiber wurde auch installiert
Für jegliche Hilfe bin ich sehr dankbar!