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

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 306023 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Για 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 μέθοδος για τη μεταφορά ενός αντικειμένου recordset του 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 Σύνολο εγγραφών αντικείμενα. Δεν μπορείτε να χρησιμοποιήσετε το Το DataSet να δημιουργήσετε χρησιμοποιώντας το ADO.NET με το CopyFromRecordset μέθοδος. Μερικά παραδείγματα στις ενότητες που ακολουθούν δείχνουν τον τρόπο μεταφοράς δεδομένων στο Excel με ADO.NET.

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

Α Ο πίνακας ερωτήματος αντικείμενο αναπαριστά έναν πίνακα που έχει δημιουργηθεί από δεδομένα που επιστρέφονται από μια εξωτερική προέλευση δεδομένων. Κατά τον αυτοματισμό του Excel, μπορείτε να δημιουργήσετε μια Ο πίνακας ερωτήματος παρέχοντας μια συμβολοσειρά σύνδεσης μιας OLE DB ή ένα αρχείο προέλευσης δεδομένων ODBC και μια συμβολοσειρά SQL. Το Excel δημιουργεί το σύνολο εγγραφών και εισάγει το σύνολο εγγραφών στο φύλλο εργασίας στη θέση που καθορίζετε. Ο πίνακας ερωτήματος αντικείμενα προσφέρουν τα εξής πλεονεκτήματα σε σύγκριση με το CopyFromRecordset μέθοδος:
  • Excel χειρίζεται τη δημιουργία του αντικειμένου recordset και τη θέση του φύλλου εργασίας.
  • Μπορείτε να αποθηκεύσετε το ερώτημα με το Ο πίνακας ερωτήματος αντικείμενο και ανανέωση αργότερα για να αποκτήσετε ένα ενημερωμένο recordset.
  • Όταν ένα νέο Ο πίνακας ερωτήματος προστίθεται στο φύλλο εργασίας σας, μπορείτε να καθορίσετε να μετατοπιστούν δεδομένων που ήδη υπάρχει σε κελιά του φύλλου εργασίας για να χειριστεί τα νέα δεδομένα (για περισσότερες πληροφορίες, δείτε το 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.Διατηρείται ΚΑΘΑΡΌ όπως φαίνεται σε αυτό το παράδειγμα, η μορφοποίηση στο βιβλίο εργασίας. Κάθε εγγραφή που προστίθεται σε μια γραμμή δανείζεται μορφή από τη γραμμή πριν από αυτήν.

Για πρόσθετες πληροφορίες σχετικά με τη χρήση του 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. Από το NET καρτέλα, εντοπίστε ADODB, και στη συνέχεια κάντε κλικ στο κουμπί Επιλέξτε.

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

      Σημείωση Στο Visual Studio 2005 δεν πρέπει να κάνετε κλικ Επιλέξτε.

      Σημείωση Εάν χρησιμοποιείτε το Microsoft Excel 2002 και δεν το έχετε κάνει ήδη, η Microsoft συνιστά την λήψη και κατόπιν εγκαταστήστε το Microsoft Office XP κύριο σύνολο διαλειτουργικότητας (PIA). Για περισσότερες πληροφορίες σχετικά με τα στοιχεία PIA του Office XP, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
      328912ΠΛΗΡΟΦΟΡΙΕΣ: Στοιχεία PIA του Microsoft Office XP είναι διαθέσιμα για λήψη
    4. Με το Προσθήκη αναφορών στο παράθυρο διαλόγου, κάντε κλικ στο κουμπί OK Για να αποδεχτείτε τις επιλογές σας.
  5. Προσθέστε ένα Σύνθετο πλαίσιο στοιχείο ελέγχου και ένα Κουμπί Έλεγχος Form1.
  6. Προσθήκη προγραμμάτων χειρισμού συμβάντων για τη φόρμα Φόρτωση το συμβάν και το Κάντε κλικ στο κουμπί συμβάντα του στοιχείου ελέγχου κουμπιού:
    1. Σε προβολή σχεδίασης για Form1.cs, κάντε διπλό κλικ Φόρμα1 (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 Forms. Η φόρμα ονομάζεται Form1. Τα δύο αρχεία που αντιπροσωπεύουν τη φόρμα ονομάζονται Form1.cs και Form1.designer.cs. Συντάξτε τον κώδικα στο Form1.cs. Το αρχείο Form1.designer.cs είναι όπου ο σχεδιαστής Windows εγγράφει τον κώδικα που υλοποιεί όλες τις ενέργειες που εκτελούνται με μεταφορά και απόθεση στοιχείων ελέγχου από την εργαλειοθήκη.

    Για περισσότερες πληροφορίες σχετικά με τη σχεδίαση φορμών Windows στο Visual C# 2005, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft Developer Network (MSDN) στο Web:
    http://msdn2.Microsoft.com/en-us/library/ms173077.aspx
    Σημείωση Εάν δεν έχετε εγκαταστήσει το 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:
Ανάπτυξη του Microsoft Office με το Visual Studio

Ιδιότητες

Αναγν. άρθρου: 306023 - Τελευταία αναθεώρηση: Κυριακή, 29 Μαΐου 2011 - Αναθεώρηση: 4.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Λέξεις-κλειδιά: 
kbautomation kbhowtomaster kbmt KB306023 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:306023

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com