Τρόπος μεταφοράς δεδομένων σε ένα βιβλίο εργασίας του Excel χρησιμοποιώντας το Visual C# 2005 ή Visual C# .NET

Για την Microsoft Visual Basic .NET έκδοση αυτού του άρθρου, ανατρέξτε στην ενότητα 306022 .

Για την Microsoft Visual Basic 6.0 έκδοση αυτού του άρθρου, ανατρέξτε στην ενότητα 247412 .

Σύνοψη

Αυτό το άρθρο βήμα προς βήμα περιγράφει διάφορες μεθόδους για τη μεταφορά δεδομένων στο Microsoft Excel 2002 από ένα πρόγραμμα της Microsoft Visual C# 2005 ή Microsoft Visual C# .NET. Αυτό το άρθρο παρουσιάζει επίσης τα πλεονεκτήματα και τα μειονεκτήματα της κάθε μεθόδου, έτσι ώστε να μπορείτε να επιλέξετε τη λύση που λειτουργεί καλύτερα για την περίπτωσή σας.

Επισκόπηση

Η τεχνική που χρησιμοποιείται πιο συχνά για τη μεταφορά δεδομένων σε ένα βιβλίο εργασίας του Excel είναι αυτοματισμού. Με την αυτοματοποίηση, μπορείτε να καλέσετε τις μεθόδους και τις ιδιότητες που σχετίζονται με εργασίες του Excel. Αυτοματοποίηση παρέχει μεγαλύτερη ευελιξία για Καθορίζει τη θέση των δεδομένων στο βιβλίο εργασίας, η μορφοποίηση του βιβλίου εργασίας και κάνετε διάφορες ρυθμίσεις κατά το χρόνο εκτέλεσης.

Με την αυτοματοποίηση, μπορείτε να χρησιμοποιήσετε διάφορες τεχνικές για να μεταφέρετε τα δεδομένα σας:

  • Μεταφορά δεδομένων ανά κελί.
  • Μεταφορά δεδομένων σε έναν πίνακα σε μια περιοχή κελιών.
  • Μεταφορά δεδομένων σε μια ομάδα εγγραφών ADO σε μια περιοχή κελιών, χρησιμοποιώντας τη μέθοδο CopyFromRecordset .
  • Δημιουργήστε ένα αντικείμενο του πίνακα ερωτήματος στο φύλλο εργασίας του Excel που περιέχει το αποτέλεσμα ενός ερωτήματος σε μια προέλευση δεδομένων ODBC ή OLEDB.
  • Μεταφορά δεδομένων στο Πρόχειρο και, στη συνέχεια, να επικολλήσετε τα περιεχόμενα του Προχείρου σε ένα φύλλο εργασίας του Excel.
Επίσης, μπορείτε να χρησιμοποιήσετε διάφορες μεθόδους που δεν απαιτούν απαραίτητα αυτοματισμού για τη μεταφορά δεδομένων στο Excel. Εάν εκτελείτε ένα πρόγραμμα διακομιστή, αυτό μπορεί να είναι μια καλή προσέγγιση για τη λήψη του επεξεργασία δεδομένων μακριά από υπολογιστές-πελάτες σας.

Για να μεταφέρετε τα δεδομένα σας χωρίς αυτοματοποίησης, μπορείτε να χρησιμοποιήσετε τις παρακάτω προσεγγίσεις:
  • Μεταφέρετε τα δεδομένα σας σε ένα αρχείο κειμένου οριοθετημένου με στηλοθέτες ή οριοθετημένο με Excel μπορεί να αναλύσει αργότερα σε κελιά σε ένα φύλλο εργασίας.
  • Μεταφέρετε τα δεδομένα σας σε ένα φύλλο εργασίας χρησιμοποιώντας ADO.NET.
  • Μεταφέρετε δεδομένα XML στο Excel (έκδοση 2002 και 2003) για την παροχή δεδομένων που έχει διαμορφωθεί και τακτοποιούνται σε γραμμές και στήλες.
Αυτό το άρθρο παρέχει μια συζήτηση και ένα δείγμα κώδικα για κάθε μία από αυτές τις τεχνικές. Στην ενότητα Δημιουργία το πλήρες δείγμα Visual C# 2005 ή Visual C# .NET έργου , παρακάτω σε αυτό το άρθρο περιγράφει τον τρόπο δημιουργίας ενός προγράμματος Visual C# .NET που εκτελεί κάθε τεχνική.

Τεχνικές

Χρήσης της αυτοματοποίησης για τη μεταφορά δεδομένων ανά κελί

Με την αυτοματοποίηση, μπορείτε να μεταφέρετε δεδομένα σε ένα κελί φύλλου εργασίας κάθε φορά:

// Start a new workbook in Excel.m_objExcel = new Excel.Application();
m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

// Add data to cells in the first worksheet in the new workbook.
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
m_objRange = m_objSheet.get_Range("A1", m_objOpt);
m_objRange.Value = "Last Name";
m_objRange = m_objSheet.get_Range("B1", m_objOpt);
m_objRange.Value = "First Name";
m_objRange = m_objSheet.get_Range("A2", m_objOpt);
m_objRange.Value = "Doe";
m_objRange = m_objSheet.get_Range("B2", m_objOpt);
m_objRange.Value = "John";

// Apply bold to cells A1:B1.
m_objRange = m_objSheet.get_Range("A1", "B1");
m_objFont = m_objRange.Font;
m_objFont.Bold=true;

// Save the Workbook and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book1.xls", m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
m_objOpt, m_objOpt, m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();

Μεταφορά δεδομένων ανά κελί είναι μια αποδεκτή προσέγγιση, εάν έχετε μια μικρή ποσότητα δεδομένων. Έχετε την ευελιξία να τοποθετήσετε οπουδήποτε δεδομένων στο βιβλίο εργασίας και να μορφοποιήσετε τα κελιά υπό συνθήκες κατά το χρόνο εκτέλεσης. Ωστόσο, δεν είναι καλή ιδέα να χρησιμοποιήσετε αυτήν την προσέγγιση, εάν έχετε μια μεγάλη ποσότητα δεδομένων για τη μεταφορά σε ένα βιβλίο εργασίας του Excel. Κάθε αντικείμενο περιοχής που αποκτάτε με αποτελέσματα χρόνου εκτέλεσης σε μια αίτηση περιβάλλοντος εργασίας, που σημαίνει ότι δεδομένα που μεταφέρει πιο αργά. Επιπλέον, τα Microsoft Windows 95, Microsoft Windows 98 και Microsoft Windows Millennium Edition (Me) έχουν όριο 64 kilobyte (KB) για αιτήσεις διασύνδεσης. Εάν έχετε περισσότερα από 64 KB αιτήσεων διασύνδεσης, ο διακομιστής αυτοματισμού (Excel) ενδέχεται να σταματήσει να ανταποκρίνεται ή ενδέχεται να λάβετε μηνύματα λάθους που δηλώνουν χαμηλής μνήμης.
Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

216400 PRB: αυτοματοποίηση COM σύντομη διαδικασία σταματά να ανταποκρίνεται η εφαρμογή προγράμματος-πελάτη σε Win95/98
Και πάλι, η μεταφορά δεδομένων ανά κελί είναι αποδεκτή μόνο για μικρές ποσότητες δεδομένων. Εάν πρέπει να μεταφέρετε μεγάλα σύνολα δεδομένων στο Excel, μπορείτε να χρησιμοποιήσετε μία από τις άλλες προσεγγίσεις που αναφέρονται σε αυτό το άρθρο για να μεταφέρετε δεδομένα μαζικά.

Για πρόσθετες πληροφορίες και ένα παράδειγμα για την αυτοματοποίηση του Excel με Visual C# .NET, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

302084 ΔΙΑΔΙΚΑΣΙΕΣ: αυτοματοποίηση του Microsoft Excel από το Microsoft Visual C# .NET

Χρησιμοποιήσετε αυτοματισμό για να μεταφέρετε έναν πίνακα δεδομένων σε μια περιοχή σε ένα φύλλο εργασίας

Μπορείτε να μεταφέρετε έναν πίνακα δεδομένων σε μια περιοχή πολλά κελιά ταυτόχρονα:

// Start a new workbook in Excel.m_objExcel = new Excel.Application();
m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

// Create an array for the headers and add it to cells A1:C1.
object[] objHeaders = {"Order ID", "Amount", "Tax"};
m_objRange = m_objSheet.get_Range("A1", "C1");
m_objRange.Value = objHeaders;
m_objFont = m_objRange.Font;
m_objFont.Bold=true;

// Create an array with 3 columns and 100 rows and add it to
// the worksheet starting at cell A2.
object[,] objData = new Object[100,3];
Random rdm = new Random((int)DateTime.Now.Ticks);
double nOrderAmt, nTax;
for(int r=0;r<100;r++)
{
objData[r,0] = "ORD" + r.ToString("0000");
nOrderAmt = rdm.Next(1000);
objData[r,1] = nOrderAmt.ToString("c");
nTax = nOrderAmt*0.07;
objData[r,2] = nTax.ToString("c");
}
m_objRange = m_objSheet.get_Range("A2", m_objOpt);
m_objRange = m_objRange.get_Resize(100,3);
m_objRange.Value = objData;

// Save the Workbook and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book2.xls", m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
m_objOpt, m_objOpt, m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();

Εάν μεταφέρετε τα δεδομένα σας χρησιμοποιώντας ένα πίνακα αντί για κάθε κελί, μπορείτε να επιτύχετε μεγάλη ένα κέρδος τεράστιο επιδόσεων με μια μεγάλη ποσότητα δεδομένων. Λάβετε υπόψη σας τις ακόλουθες γραμμές από τον εν λόγω κώδικα που μεταφέρει δεδομένα στα 300 κελιά στο φύλλο εργασίας:

objRange = objSheet.get_Range("A2", m_objOpt);objRange = objRange.get_Resize(100,3);
objRange.Value = objData;

Αυτός ο κωδικός αντιπροσωπεύει δύο αιτήσεις διασύνδεσης: μία για το αντικείμενο περιοχής που επιστρέφει τη μέθοδο περιοχή και μία άλλη για το αντικείμενο περιοχής που επιστρέφει τη μέθοδο αλλαγής μεγέθους . Αντίθετα, τη μεταφορά δεδομένων ανά κελί απαιτεί αιτήσεις για 300 διασυνδέσεων περιοχή αντικείμενα. Όταν είναι δυνατόν, μπορούν να επωφεληθούν από τη μεταφορά χύδην τα δεδομένα σας και τη μείωση του αριθμού των αιτήσεων διασύνδεσης που κάνετε.


Για πρόσθετες πληροφορίες σχετικά με τη χρήση πινάκων για να λάβετε και να ορίσετε τιμές σε περιοχές με τον αυτοματισμό του Excel, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

302096 ΔΙΑΔΙΚΑΣΙΕΣ: αυτοματοποίηση Excel με Visual C# .NET να συμπληρώσετε ή να αποκτήσει τα δεδομένα σε μια περιοχή χρησιμοποιώντας πίνακες

Χρησιμοποιήσετε αυτοματισμό για να μεταφέρετε μια ομάδα εγγραφών ADO σε μια περιοχή του φύλλου εργασίας

Τα μοντέλα αντικειμένου για το Excel 2000, Excel 2002 και Excel 2003 παρέχουν τη μέθοδο CopyFromRecordset για να μεταφέρετε μια ομάδα εγγραφών ADO σε μια περιοχή σε ένα φύλλο εργασίας. Ο ακόλουθος κώδικας δείχνει τον τρόπο για να αυτοματοποιήσετε το Excel για να μεταφέρετε τα περιεχόμενα του πίνακα "Παραγγελίες" στο δείγμα βάσης δεδομένων Northwind, χρησιμοποιώντας τη μέθοδο CopyFromRecordset :

// Create a Recordset from all the records in the Orders table.ADODB.Connection objConn = new ADODB.Connection();
ADODB._Recordset objRS = null;
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
m_strNorthwind + ";", "", "", 0);
objConn.CursorLocation = ADODB.CursorLocationEnum.adUseClient;
object objRecAff;
objRS = (ADODB._Recordset)objConn.Execute("Orders", out objRecAff,
(int)ADODB.CommandTypeEnum.adCmdTable);

// Start a new workbook in Excel.
m_objExcel = new Excel.Application();
m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

// Get the Fields collection from the recordset and determine
// the number of fields (or columns).
System.Collections.IEnumerator objFields = objRS.Fields.GetEnumerator();
int nFields = objRS.Fields.Count;

// Create an array for the headers and add it to the
// worksheet starting at cell A1.
object[] objHeaders = new object[nFields];
ADODB.Field objField = null;
for(int n=0;n<nFields;n++)
{
objFields.MoveNext();
objField = (ADODB.Field)objFields.Current;
objHeaders[n] = objField.Name;
}
m_objRange = m_objSheet.get_Range("A1", m_objOpt);
m_objRange = m_objRange.get_Resize(1, nFields);
m_objRange.Value = objHeaders;
m_objFont = m_objRange.Font;
m_objFont.Bold=true;

// Transfer the recordset to the worksheet starting at cell A2.
m_objRange = m_objSheet.get_Range("A2", m_objOpt);
m_objRange.CopyFromRecordset(objRS, m_objOpt, m_objOpt);

// Save the Workbook and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book3.xls", m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
m_objOpt, m_objOpt, m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();

// Close the recordset and connection.
objRS.Close();
objConn.Close();

Σημείωση CopyFromRecordset λειτουργεί μόνο με αντικείμενα ADO Recordset . Δεν μπορείτε να χρησιμοποιήσετε το σύνολο δεδομένων που δημιουργείτε χρησιμοποιώντας ADO.NET με τη μέθοδο CopyFromRecordset . Μερικά παραδείγματα στις ενότητες που ακολουθούν δείχνουν τον τρόπο μεταφοράς δεδομένων στο Excel με ADO.NET.

Χρησιμοποιήσετε αυτοματισμό για να δημιουργήσετε ένα αντικείμενο του πίνακα ερωτήματος σε ένα φύλλο εργασίας

Ένα αντικείμενο του πίνακα ερωτήματος αναπαριστά έναν πίνακα που έχει δημιουργηθεί από δεδομένα που επιστρέφονται από μια εξωτερική προέλευση δεδομένων. Κατά τον αυτοματισμό του Excel, μπορείτε να δημιουργήσετε μια QueryTable , παρέχοντας μια συμβολοσειρά σύνδεσης σε μια OLE DB ή ένα αρχείο προέλευσης δεδομένων ODBC και μια συμβολοσειρά SQL. Το Excel δημιουργεί το σύνολο εγγραφών και εισάγει το σύνολο εγγραφών στο φύλλο εργασίας στη θέση που έχετε καθορίσει. Αντικείμενα QueryTable προσφέρει τα παρακάτω πλεονεκτήματα σε σχέση με τη μέθοδο CopyFromRecordset :

  • Excel χειρίζεται τη δημιουργία του συνόλου εγγραφών και τη θέση του φύλλου εργασίας.
  • Μπορείτε να αποθηκεύσετε το ερώτημα με το αντικείμενο του πίνακα ερωτήματος και ανανέωση αργότερα για να αποκτήσετε ένα ενημερωμένο σύνολο εγγραφών.
  • Όταν προστίθεται ένα νέο πίνακα ερωτήματος στο φύλλο εργασίας σας, μπορείτε να καθορίσετε να μετατοπιστούν δεδομένα που υπάρχουν ήδη στα κελιά του φύλλου εργασίας για να χειριστείτε τα νέα δεδομένα (για περισσότερες πληροφορίες, δείτε την ιδιότητα RefreshStyle ).
Ο ακόλουθος κώδικας περιγράφει τον τρόπο για να αυτοματοποιήσετε το Excel 2000, Excel 2002 ή Excel 2003 για να δημιουργήσετε ένα νέο πίνακα ερωτήματος στο φύλλο εργασίας του Excel, χρησιμοποιώντας δεδομένα από το δείγμα βάσης δεδομένων Northwind:

// Start a new workbook in Excel.m_objExcel = new Excel.Application();
m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

// Create a QueryTable that starts at cell A1.
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
m_objRange = m_objSheet.get_Range("A1", m_objOpt);
m_objQryTables = m_objSheet.QueryTables;
m_objQryTable = (Excel._QueryTable)m_objQryTables.Add(
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
m_strNorthwind + ";", m_objRange, "Select * From Orders");
m_objQryTable.RefreshStyle = Excel.XlCellInsertionMode.xlInsertEntireRows;
m_objQryTable.Refresh(false);

// Save the workbook and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book4.xls", m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();

Χρήση του Προχείρου των Windows

Μπορείτε να χρησιμοποιήσετε το Πρόχειρο των Windows για τη μεταφορά δεδομένων σε ένα φύλλο εργασίας. Για να επικολλήσετε δεδομένα σε πολλά κελιά σε ένα φύλλο εργασίας, μπορείτε να αντιγράψετε μια συμβολοσειρά όπου στήλες είναι οριοθετημένο με χαρακτήρες TAB και γραμμές οριοθετούνται με χαρακτήρες επαναφοράς. Ο ακόλουθος κώδικας δείχνει πώς Visual C# .NET να χρησιμοποιήσετε το Πρόχειρο των Windows για τη μεταφορά δεδομένων στο Excel:

// Copy a string to the Windows clipboard.string sData = "FirstName\tLastName\tBirthdate\r\n"  +
"Bill\tBrown\t2/5/85\r\n" +
"Joe\tThomas\t1/1/91";
System.Windows.Forms.Clipboard.SetDataObject(sData);

// Start a new workbook in Excel.
m_objExcel = new Excel.Application();
m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

// Paste the data starting at cell A1.
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
m_objRange = m_objSheet.get_Range("A1", m_objOpt);
m_objSheet.Paste(m_objRange, false);

// Save the workbook and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book5.xls", m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();

Δημιουργήστε ένα αρχείο οριοθετημένου κειμένου που μπορεί να αναλύσει Excel σε γραμμές και στήλες

Το Excel μπορεί να ανοίξει με στηλοθέτες ή κόμματα και να αναλύσει σωστά τα δεδομένα σε κελιά. Μπορείτε να χρησιμοποιήσετε αυτήν τη δυνατότητα όταν θέλετε να μεταφέρετε μια μεγάλη ποσότητα δεδομένων σε ένα φύλλο εργασίας ενώ χρησιμοποιείτε λίγη ή καθόλου, αυτοματισμού. Αυτό μπορεί να είναι μια καλή προσέγγιση για ένα πρόγραμμα-πελάτη διακομιστή, επειδή το αρχείο κειμένου μπορεί να είναι δημιουργημένο διακομιστή. Στη συνέχεια, μπορείτε να ανοίξετε το αρχείο κειμένου στον υπολογιστή-πελάτη, χρησιμοποιώντας αυτοματοποίηση όπου είναι κατάλληλο.

Ο ακόλουθος κώδικας δείχνει τον τρόπο δημιουργίας ενός αρχείου κειμένου οριοθετημένου με στηλοθέτες από δεδομένα τα οποία διαβάζονται με ADO.NET:
// Connect to the data source.System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection( 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strNorthwind + ";");
objConn.Open();

// Execute a command to retrieve all records from the Employees table.
System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand(
"Select * From Employees", objConn);
System.Data.OleDb.OleDbDataReader objReader;
objReader = objCmd.ExecuteReader();

// Create the FileStream and StreamWriter object to write
// the recordset contents to file.
System.IO.FileStream fs = new System.IO.FileStream(
m_strSampleFolder + "Book6.txt", System.IO.FileMode.Create);
System.IO.StreamWriter sw = new System.IO.StreamWriter(
fs, System.Text.Encoding.Unicode);

// Write the field names (headers) as the first line in the text file.
sw.WriteLine(objReader.GetName(0) + "\t" + objReader.GetName(1) +
"\t" + objReader.GetName(2) + "\t" + objReader.GetName(3) +
"\t" + objReader.GetName(4) + "\t" + objReader.GetName(5));

// Write the first six columns in the recordset to a text file as
// tab-delimited.
while(objReader.Read())
{
for(int i=0;i<=5;i++)
{
if(!objReader.IsDBNull(i))
{
string s;
s = objReader.GetDataTypeName(i);
if(objReader.GetDataTypeName(i)=="DBTYPE_I4")
{
sw.Write(objReader.GetInt32(i).ToString());
}
else if(objReader.GetDataTypeName(i)=="DBTYPE_DATE")
{
sw.Write(objReader.GetDateTime(i).ToString("d"));
}
else if (objReader.GetDataTypeName(i)=="DBTYPE_WVARCHAR")
{
sw.Write(objReader.GetString(i));
}
}
if(i<5) sw.Write("\t");
}
sw.WriteLine();
}
sw.Flush();// Write the buffered data to the filestream.

// Close the FileStream.
fs.Close();

// Close the reader and the connection.
objReader.Close();
objConn.Close();



Ο παραπάνω κώδικας χρησιμοποιεί χωρίς αυτοματισμό. Ωστόσο, εάν θέλετε, μπορείτε να χρησιμοποιήσετε την αυτοματοποίηση για να ανοίξετε το αρχείο κειμένου και αποθηκεύστε το αρχείο σε μορφή βιβλίου εργασίας του Excel, το οποίο μοιάζει με αυτό:

// Open the text file in Excel.m_objExcel = new Excel.Application();
m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
m_objBooks.OpenText(m_strSampleFolder + "Book6.txt", Excel.XlPlatform.xlWindows, 1,
Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierDoubleQuote,
false, true, false, false, false, false, m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt);

m_objBook = m_objExcel.ActiveWorkbook;

// Save the text file in the typical workbook format and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book6.xls", Excel.XlFileFormat.xlWorkbookNormal,
m_objOpt, m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();

Μεταφορά δεδομένων σε ένα φύλλο εργασίας χρησιμοποιώντας ADO.NET

Μπορείτε να χρησιμοποιήσετε την υπηρεσία παροχής Microsoft Jet OLE DB για την προσθήκη εγγραφών σε έναν πίνακα σε ένα υπάρχον βιβλίο εργασίας του Excel. Έναν πίνακα στο Excel είναι απλώς μια περιοχή κελιών; η περιοχή μπορεί να έχει ένα καθορισμένο όνομα. Συνήθως, η πρώτη γραμμή της περιοχής που περιέχει τις κεφαλίδες (ή τα ονόματα πεδίων) και όλες τις νεότερες γραμμές στην περιοχή περιέχουν τις εγγραφές.

Ο κώδικας που ακολουθεί προσθέτει δύο νέες εγγραφές σε έναν πίνακα Book7.xls. Σε αυτήν την περίπτωση, ο πίνακας είναι Φύλλο1:
// Establish a connection to the data source.System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strSampleFolder +
"Book7.xls;Extended Properties=Excel 8.0;");
objConn.Open();

// Add two records to the table named 'MyTable'.
System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand();
objCmd.Connection = objConn;
objCmd.CommandText = "Insert into MyTable (FirstName, LastName)" +
" values ('Bill', 'Brown')";
objCmd.ExecuteNonQuery();
objCmd.CommandText = "Insert into MyTable (FirstName, LastName)" +
" values ('Joe', 'Thomas')";
objCmd.ExecuteNonQuery();

// Close the connection.
objConn.Close();

Όταν προσθέτετε εγγραφές με ADO.NET, όπως φαίνεται σε αυτό το παράδειγμα, η μορφοποίηση στο βιβλίο εργασίας διατηρείται. Κάθε καρτέλα που προστίθεται σε μια γραμμή δανείζεται η μορφή από την γραμμή πριν από αυτήν.

Για πρόσθετες πληροφορίες σχετικά με τη χρήση ADO.NET, κάντε κλικ στους αριθμούς των άρθρων παρακάτω, για να προβάλετε τα άρθρα της Γνωσιακής Βάσης της Microsoft:

306636 ΔΙΑΔΙΚΑΣΙΕΣ: σύνδεση με μια βάση δεδομένων και εκτελέστε την εντολή χρησιμοποιώντας ADO.NET και Visual C# .NET
314145 ΔΙΑΔΙΚΑΣΙΕΣ: συμπληρώσετε ένα αντικείμενο DataSet από μια βάση δεδομένων χρησιμοποιώντας το Visual C# .NET
307587 ΔΙΑΔΙΚΑΣΙΕΣ: ενημέρωση μιας βάσης δεδομένων από ένα αντικείμενο DataSet, χρησιμοποιώντας το Visual C# .NET
Για πρόσθετες πληροφορίες σχετικά με την υπηρεσία παροχής Jet OLEDB με αρχεία προέλευσης δεδομένων του Excel, κάντε κλικ στους αριθμούς των άρθρων παρακάτω, για να προβάλετε τα άρθρα της Γνωσιακής Βάσης της Microsoft:

316934 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση ADO.NET για να ανακτήσετε και να τροποποιήσετε εγγραφές σε ένα βιβλίο εργασίας του Excel με τη Visual Basic .NET
278973 ΔΕΊΓΜΑ: ExcelADO παρουσιάζει πώς μπορείτε να χρησιμοποιήσετε τα ADO για την ανάγνωση και εγγραφή δεδομένων στα βιβλία εργασίας του Excel
257819 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση ADO με δεδομένα του Excel από τη Visual Basic ή της VBA

Μεταφορά δεδομένων XML (Excel 2002 και Excel 2003)

Excel 2002 και το 2003 να ανοίξετε οποιοδήποτε αρχείο XML να είναι καλοσχεδιασμένο. Μπορείτε να ανοίξετε αρχεία XML απευθείας, χρησιμοποιώντας την εντολή " Άνοιγμα " από το μενού αρχείο , ή μέσω προγραμματισμού, χρησιμοποιώντας είτε το Άνοιγμα ή OpenXML μέθοδοι της συλλογής βιβλίων εργασίας . Εάν δημιουργείτε αρχεία XML για χρήση στο Excel, μπορείτε επίσης να δημιουργήσετε φύλλα στυλ για τη μορφοποίηση των δεδομένων.

Για πρόσθετες πληροφορίες σχετικά με τη χρήση XML στο Excel 2002, κάντε κλικ στους αριθμούς των άρθρων παρακάτω, για να προβάλετε τα άρθρα της Γνωσιακής Βάσης της Microsoft:

307029 ΔΙΑΔΙΚΑΣΙΕΣ: μεταφορά δεδομένων XML στο Microsoft Excel 2002, χρησιμοποιώντας το Visual C# .NET
288215 ΠΛΗΡΟΦΟΡΙΕΣ: Microsoft Excel 2002 και το XML

Δημιουργήστε το πλήρες δείγμα Visual C# .NET έργου

  1. Δημιουργήστε έναν νέο φάκελο με το όνομα C:\ExcelData. Το δείγμα προγράμματος θα αποθηκεύσει τα βιβλία εργασίας του Excel σε αυτόν το φάκελο.
  2. Δημιουργήστε ένα νέο βιβλίο εργασίας για το δείγμα για την εγγραφή:
    1. Ξεκινήστε ένα νέο βιβλίο εργασίας του Excel.
    2. Στο Φύλλο1 του νέου βιβλίου εργασίας, πληκτρολογήστε το όνομα στο κελί A1 και το "Επώνυμο" στο κελί B1.
    3. Επιλέξτε A1:B1.
    4. Στο μενού " Εισαγωγή ", τοποθετήστε το δείκτη στο όνομακαι, στη συνέχεια, κάντε κλικ στο κουμπί Ορισμός. Πληκτρολογήστε το όνομα Πίνακας και στη συνέχεια κάντε κλικ στο κουμπί OK.
    5. Αποθηκεύστε το βιβλίο εργασίας ως C:\Exceldata\Book7.xls.
    6. Κλείστε το Excel.
  3. Ξεκινήστε το Microsoft Visual Studio 2005 ή το Microsoft Visual Studio .NET. Στο μενού αρχείο , επιλέξτε Δημιουργίακαι, στη συνέχεια, κάντε κλικ στο έργο. Στην περιοχή Visual C# έργα ή Visual C#, επιλέξτε Εφαρμογή των Windows. Από προεπιλογή, δημιουργείται η φόρμα Form1.
  4. Προσθέστε μια αναφορά στη βιβλιοθήκη αντικειμένων του Excel και η κύρια συγκρότηση διαλειτουργικότητας ADODB. Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα:
    1. Στο μενού ' έργο ', κάντε κλικ στο κουμπί Προσθήκη αναφοράς.
    2. Στην καρτέλα " ΔΊΚΤΥΟ ", εντοπίστε το αντικείμενο ADODBκαι, στη συνέχεια, κάντε κλικ στην επιλογή.

      Σημείωση Στο Visual Studio 2005, δεν χρειάζεται να κάντε κλικ στην επιλογή.
    3. Στην καρτέλα " COM ", εντοπίστε βιβλιοθήκη αντικειμένων του Microsoft Excel έκδοση 10.0 ή τη βιβλιοθήκη αντικειμένων του Microsoft Excel 11.0και, στη συνέχεια, κάντε κλικ στην επιλογή.

      Σημείωση Στο Visual Studio 2005, δεν χρειάζεται να κάντε κλικ στην επιλογή.

      Σημείωση Εάν χρησιμοποιείτε το Microsoft Excel 2002 και δεν το έχετε κάνει ήδη, η Microsoft συνιστά που κάνετε λήψη και, στη συνέχεια, να εγκαταστήσετε το Microsoft Office XP πρωτεύον Interop (PIA). Για περισσότερες πληροφορίες σχετικά με τα στοιχεία PIA του Office XP, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

      328912 ΠΛΗΡΟΦΟΡΙΕΣ: στοιχεία PIA του Microsoft Office XP είναι διαθέσιμο για λήψη

    4. Στο πλαίσιο διαλόγου " Προσθήκη αναφορών ", κάντε κλικ στο κουμπί OK για να αποδεχτείτε τις επιλογές σας.
  5. Προσθέστε ένα στοιχείο ελέγχου Σύνθετου πλαισίου και ένα στοιχείο ελέγχου κουμπιού Form1.
  6. Προσθήκη προγραμμάτων χειρισμού συμβάντων για το συμβάν φόρτωσης της φόρμας και το
    Κάντε κλικ στο κουμπί συμβάντα του στοιχείου ελέγχου κουμπιού:
    1. Σε προβολή σχεδίασης για Form1.cs, κάντε διπλό κλικ Form1.

      Το πρόγραμμα χειρισμού για συμβάν φόρτωσης της φόρμας δημιουργείται και εμφανίζεται στο Form1.cs.
    2. Στο μενού Προβολή , κάντε κλικ στην επιλογή "Σχεδίαση" για να μεταβείτε σε προβολή σχεδίασης.
    3. Κάντε διπλό κλικ στο Button1.

      Το πρόγραμμα χειρισμού συμβάντος , κάντε κλικ στο κουμπί δημιουργείται και εμφανίζεται στο Form1.cs.
  7. Στο Form1.cs, αντικαταστήστε τον ακόλουθο κώδικα:
    private void Form1_Load(object sender, System.EventArgs e){

    }

    private void button1_Click(object sender, System.EventArgs e)
    {

    }

    με:
            // Excel object references.        private Excel.Application m_objExcel =  null;
    private Excel.Workbooks m_objBooks = null;
    private Excel._Workbook m_objBook = null;
    private Excel.Sheets m_objSheets = null;
    private Excel._Worksheet m_objSheet = null;
    private Excel.Range m_objRange = null;
    private Excel.Font m_objFont = null;
    private Excel.QueryTables m_objQryTables = null;
    private Excel._QueryTable m_objQryTable = null;

    // Frequenty-used variable for optional arguments.
    private object m_objOpt = System.Reflection.Missing.Value;

    // Paths used by the sample code for accessing and storing data.
    private object m_strSampleFolder = "C:\\ExcelData\\";
    private string m_strNorthwind = "C:\\Program Files\\Microsoft Office\\Office10\\Samples\\Northwind.mdb";

    private void Form1_Load(object sender, System.EventArgs e)
    {
    comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

    comboBox1.Items.AddRange(new object[]{
    "Use Automation to Transfer Data Cell by Cell ",
    "Use Automation to Transfer an Array of Data to a Range on a Worksheet ",
    "Use Automation to Transfer an ADO Recordset to a Worksheet Range ",
    "Use Automation to Create a QueryTable on a Worksheet",
    "Use the Clipboard",
    "Create a Delimited Text File that Excel Can Parse into Rows and Columns",
    "Transfer Data to a Worksheet Using ADO.NET "});
    comboBox1.SelectedIndex = 0;
    button1.Text = "Go!";
    }

    private void button1_Click(object sender, System.EventArgs e)
    {
    switch (comboBox1.SelectedIndex)
    {
    case 0 : Automation_CellByCell(); break;
    case 1 : Automation_UseArray(); break;
    case 2 : Automation_ADORecordset(); break;
    case 3 : Automation_QueryTable(); break;
    case 4 : Use_Clipboard(); break;
    case 5 : Create_TextFile(); break;
    case 6 : Use_ADONET(); break;
    }

    //Clean-up
    m_objFont = null;
    m_objRange = null;
    m_objSheet = null;
    m_objSheets = null;
    m_objBooks = null;
    m_objBook = null;
    m_objExcel = null;
    GC.Collect();

    }

    private void Automation_CellByCell()
    {
    // Start a new workbook in Excel.
    m_objExcel = new Excel.Application();
    m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
    m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

    // Add data to cells of the first worksheet in the new workbook.
    m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
    m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
    m_objRange = m_objSheet.get_Range("A1", m_objOpt);
    m_objRange.set_Value(m_objOpt,"Last Name");
    m_objRange = m_objSheet.get_Range("B1", m_objOpt);
    m_objRange.set_Value(m_objOpt,"First Name");
    m_objRange = m_objSheet.get_Range("A2", m_objOpt);
    m_objRange.set_Value(m_objOpt,"Doe");
    m_objRange = m_objSheet.get_Range("B2", m_objOpt);
    m_objRange.set_Value(m_objOpt,"John");

    // Apply bold to cells A1:B1.
    m_objRange = m_objSheet.get_Range("A1", "B1");
    m_objFont = m_objRange.Font;
    m_objFont.Bold=true;

    // Save the workbook and quit Excel.
    m_objBook.SaveAs(m_strSampleFolder + "Book1.xls", m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
    m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
    m_objBook.Close(false, m_objOpt, m_objOpt);
    m_objExcel.Quit();

    }

    private void Automation_UseArray()
    {
    // Start a new workbook in Excel.
    m_objExcel = new Excel.Application();
    m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
    m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));
    m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
    m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

    // Create an array for the headers and add it to cells A1:C1.
    object[] objHeaders = {"Order ID", "Amount", "Tax"};
    m_objRange = m_objSheet.get_Range("A1", "C1");
    m_objRange.set_Value(m_objOpt,objHeaders);
    m_objFont = m_objRange.Font;
    m_objFont.Bold=true;

    // Create an array with 3 columns and 100 rows and add it to
    // the worksheet starting at cell A2.
    object[,] objData = new Object[100,3];
    Random rdm = new Random((int)DateTime.Now.Ticks);
    double nOrderAmt, nTax;
    for(int r=0;r<100;r++)
    {
    objData[r,0] = "ORD" + r.ToString("0000");
    nOrderAmt = rdm.Next(1000);
    objData[r,1] = nOrderAmt.ToString("c");
    nTax = nOrderAmt*0.07;
    objData[r,2] = nTax.ToString("c");
    }
    m_objRange = m_objSheet.get_Range("A2", m_objOpt);
    m_objRange = m_objRange.get_Resize(100,3);
    m_objRange.set_Value(m_objOpt,"objData");

    // Save the workbook and quit Excel.
    m_objBook.SaveAs(m_strSampleFolder + "Book2.xls", m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
    m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
    m_objBook.Close(false, m_objOpt, m_objOpt);
    m_objExcel.Quit();

    }

    private void Automation_ADORecordset()
    {
    // Create a Recordset from all the records in the Orders table.
    ADODB.Connection objConn = new ADODB.Connection();
    ADODB._Recordset objRS = null;
    objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
    m_strNorthwind + ";", "", "", 0);
    objConn.CursorLocation = ADODB.CursorLocationEnum.adUseClient;
    object objRecAff;
    objRS = (ADODB._Recordset)objConn.Execute("Orders", out objRecAff,
    (int)ADODB.CommandTypeEnum.adCmdTable);

    // Start a new workbook in Excel.
    m_objExcel = new Excel.Application();
    m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
    m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));
    m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
    m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

    // Get the Fields collection from the recordset and determine
    // the number of fields (or columns).
    System.Collections.IEnumerator objFields = objRS.Fields.GetEnumerator();
    int nFields = objRS.Fields.Count;

    // Create an array for the headers and add it to the
    // worksheet starting at cell A1.
    object[] objHeaders = new object[nFields];
    ADODB.Field objField = null;
    for(int n=0;n<nFields;n++)
    {
    objFields.MoveNext();
    objField = (ADODB.Field)objFields.Current;
    objHeaders[n] = objField.Name;
    }
    m_objRange = m_objSheet.get_Range("A1", m_objOpt);
    m_objRange = m_objRange.get_Resize(1, nFields);
    m_objRange.set_Value(m_objOpt,objHeaders);
    m_objFont = m_objRange.Font;
    m_objFont.Bold=true;

    // Transfer the recordset to the worksheet starting at cell A2.
    m_objRange = m_objSheet.get_Range("A2", m_objOpt);
    m_objRange.CopyFromRecordset(objRS, m_objOpt, m_objOpt);

    // Save the workbook and quit Excel.
    m_objBook.SaveAs(m_strSampleFolder + "Book3.xls", m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
    m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
    m_objBook.Close(false, m_objOpt, m_objOpt);
    m_objExcel.Quit();

    //Close the recordset and connection
    objRS.Close();
    objConn.Close();

    }

    private void Automation_QueryTable()
    {
    // Start a new workbook in Excel.
    m_objExcel = new Excel.Application();
    m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
    m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

    // Create a QueryTable that starts at cell A1.
    m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
    m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
    m_objRange = m_objSheet.get_Range("A1", m_objOpt);
    m_objQryTables = m_objSheet.QueryTables;
    m_objQryTable = (Excel._QueryTable)m_objQryTables.Add(
    "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
    m_strNorthwind + ";", m_objRange, "Select * From Orders");
    m_objQryTable.RefreshStyle = Excel.XlCellInsertionMode.xlInsertEntireRows;
    m_objQryTable.Refresh(false);

    // Save the workbook and quit Excel.
    m_objBook.SaveAs(m_strSampleFolder + "Book4.xls", m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt);
    m_objBook.Close(false, m_objOpt, m_objOpt);
    m_objExcel.Quit();

    }

    private void Use_Clipboard()
    {
    // Copy a string to the clipboard.
    string sData = "FirstName\tLastName\tBirthdate\r\n" +
    "Bill\tBrown\t2/5/85\r\n" +
    "Joe\tThomas\t1/1/91";
    System.Windows.Forms.Clipboard.SetDataObject(sData);

    // Start a new workbook in Excel.
    m_objExcel = new Excel.Application();
    m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
    m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));

    // Paste the data starting at cell A1.
    m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
    m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
    m_objRange = m_objSheet.get_Range("A1", m_objOpt);
    m_objSheet.Paste(m_objRange, false);

    // Save the workbook and quit Excel.
    m_objBook.SaveAs(m_strSampleFolder + "Book5.xls", m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt);
    m_objBook.Close(false, m_objOpt, m_objOpt);
    m_objExcel.Quit();

    }

    private void Create_TextFile()
    {
    // Connect to the data source.
    System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strNorthwind + ";");
    objConn.Open();

    // Execute a command to retrieve all records from the Employees table.
    System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand(
    "Select * From Employees", objConn);
    System.Data.OleDb.OleDbDataReader objReader;
    objReader = objCmd.ExecuteReader();


    // Create the FileStream and StreamWriter object to write
    // the recordset contents to file.
    System.IO.FileStream fs = new System.IO.FileStream(
    m_strSampleFolder + "Book6.txt", System.IO.FileMode.Create);
    System.IO.StreamWriter sw = new System.IO.StreamWriter(
    fs, System.Text.Encoding.Unicode);

    // Write the field names (headers) as the first line in the text file.
    sw.WriteLine(objReader.GetName(0) + "\t" + objReader.GetName(1) +
    "\t" + objReader.GetName(2) + "\t" + objReader.GetName(3) +
    "\t" + objReader.GetName(4) + "\t" + objReader.GetName(5));

    // Write the first six columns in the recordset to a text file as
    // tab-delimited.
    while(objReader.Read())
    {
    for(int i=0;i<=5;i++)
    {
    if(!objReader.IsDBNull(i))
    {
    string s;
    s = objReader.GetDataTypeName(i);
    if(objReader.GetDataTypeName(i)=="DBTYPE_I4")
    {
    sw.Write(objReader.GetInt32(i).ToString());
    }
    else if(objReader.GetDataTypeName(i)=="DBTYPE_DATE")
    {
    sw.Write(objReader.GetDateTime(i).ToString("d"));
    }
    else if (objReader.GetDataTypeName(i)=="DBTYPE_WVARCHAR")
    {
    sw.Write(objReader.GetString(i));
    }
    }
    if(i<5) sw.Write("\t");
    }
    sw.WriteLine();
    }
    sw.Flush();// Write the buffered data to the FileStream.

    // Close the FileStream.
    fs.Close();

    // Close the reader and the connection.
    objReader.Close();
    objConn.Close();

    // ==================================================================
    // Optionally, automate Excel to open the text file and save it in the
    // Excel workbook format.

    // Open the text file in Excel.
    m_objExcel = new Excel.Application();
    m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
    m_objBooks.OpenText(m_strSampleFolder + "Book6.txt", Excel.XlPlatform.xlWindows, 1,
    Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierDoubleQuote,
    false, true, false, false, false, false, m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

    m_objBook = m_objExcel.ActiveWorkbook;

    // Save the text file in the typical workbook format and quit Excel.
    m_objBook.SaveAs(m_strSampleFolder + "Book6.xls", Excel.XlFileFormat.xlWorkbookNormal,
    m_objOpt, m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt);
    m_objBook.Close(false, m_objOpt, m_objOpt);
    m_objExcel.Quit();

    }

    private void Use_ADONET()
    {
    // Establish a connection to the data source.
    System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strSampleFolder +
    "Book7.xls;Extended Properties=Excel 8.0;");
    objConn.Open();

    // Add two records to the table named 'MyTable'.
    System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand();
    objCmd.Connection = objConn;
    objCmd.CommandText = "Insert into MyTable (FirstName, LastName)" +
    " values ('Bill', 'Brown')";

    objCmd.ExecuteNonQuery();
    objCmd.CommandText = "Insert into MyTable (FirstName, LastName)" +
    " values ('Joe', 'Thomas')";
    objCmd.ExecuteNonQuery();


    // Close the connection.
    objConn.Close();

    }

    } // End Class
    }// End namespace

    Σημείωση Πρέπει να αλλάξετε τον κωδικό στο Visual Studio 2005. Από προεπιλογή, Visual C# προσθέτει μία φόρμα για το έργο όταν δημιουργείτε ένα έργο Windows φόρμες. Η φόρμα ονομάζεται Form1. Τα δύο αρχεία που αντιπροσωπεύει τη φόρμα ονομάζονται Form1.cs και Form1.designer.cs. Συντάξτε τον κώδικα στο Form1.cs. Το αρχείο Form1.designer.cs είναι όπου ο σχεδιαστής Windows εγγράφει τον κώδικα που υλοποιεί όλες τις ενέργειες που εκτελούνται με μεταφορά και απόθεση στοιχείων ελέγχου από την εργαλειοθήκη.



    Για περισσότερες πληροφορίες σχετικά με τη σχεδίαση φορμών Windows στο Visual C# 2005, επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft Developer Network (MSDN) στο Web:

    Σημείωση Εάν δεν έχετε εγκαταστήσει το Office στον προεπιλεγμένο φάκελο (C:\Program Files\Microsoft Office), τροποποιήστε τη σταθερά m_strNorthwind στο δείγμα κώδικα ώστε να ταιριάζει με τη διαδρομή εγκατάστασης για Northwind.mdb.
  8. Προσθέστε τα ακόλουθα στις οδηγίες Χρήση στο Form1.cs:
    using System.Reflection;using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;

  9. Πιέστε το πλήκτρο F5 για να δημιουργήσετε και να εκτελέσετε το δείγμα.

ΑΝΑΦΟΡΈΣ

Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:
Ιδιότητες

Αναγνωριστικό άρθρου: 306023 - Τελευταία αναθεώρηση: 21 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια