ID Artikel: 302084 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0

Cara mengotomatisasi Microsoft Excel dari Microsoft Visual C#.NET

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menunjukkan cara membuat otomatisasi klien untuk Microsoft Excel dengan menggunakan Microsoft Visual C#.NET.

INFORMASI LEBIH LANJUT

Otomatisasi adalah proses yang memungkinkan aplikasi yang ditulis dalam bahasa seperti Visual C#.NET untuk pemrograman mengendalikan lain aplikasi. Otomatisasi untuk Excel memungkinkan Anda untuk melakukan tindakan seperti membuat buku kerja baru, menambahkan data ke buku kerja, atau membuat grafik. Dengan Excel dan aplikasi Microsoft Office, hampir semua tindakan Anda dapat melakukan secara manual melalui antarmuka pengguna dapat juga dilakukan Pemrograman dengan menggunakan otomatisasi.

Excel memperlihatkan ini program fungsi ini melalui model objek. Model objek adalah kumpulan kelas dan metode yang berfungsi sebagai rekan-rekan untuk komponen logis Excel. Sebagai contoh, ada Aplikasi objek, Buku kerja objek, dan Lembar kerja objek, masing-masing berisi fungsi potongan-potongan Excel. Mengakses object model dari Visual C#.NET, Anda dapat mengatur proyek referensi ke perpustakaan jenis.

Artikel ini menunjukkan bagaimana untuk mengatur proyek tepat referensi ke perpustakaan jenis Excel untuk Visual C#.NET dan menyediakan kode contoh untuk mengotomatisasi Excel.

Membuat klien otomasi untuk Microsoft Excel

  1. Mulai Microsoft Visual Studio.NET.
  2. Pada Berkas menu, klik Baru, lalu klik Project. Pilih Aplikasi Windows dari jenis Visual C# proyek. Form1 dibuat secara default.
  3. Menambahkan referensi ke Perpustakaan objek Microsoft Excel. Untuk melakukannya, ikuti langkah-langkah berikut:
    1. Pada Project menu, klik Menambahkan referensi.
    2. Pada COM tab, Cari Microsoft Excel Perpustakaan objek, klik Pilih.

      Catatan Microsoft Office 2003 mencakup Interop utama Majelis (PIAs). Microsoft Office XP tidak mencakup PIAs, tetapi mereka dapat di-download.Untuk informasi lebih lanjut tentang Office XP PIAs, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
      328912  (http://support.microsoft.com/kb/328912/ ) Microsoft Office XP utama interop Majelis (PIAs) tersedia untuk di-download
    3. Klik Oke dalam Menambahkan referensi kotak dialog untuk menerima pilihan Anda. Jika Anda diminta untuk menghasilkan pembungkus untuk perpustakaan yang Anda pilih, klik Ya.
  4. Pada Lihat menu, pilih Toolbox untuk menampilkan toolbox, dan kemudian menambahkan tombol ke Form1.
  5. Klik dua kali Button1. Jendela kode untuk bentuk muncul.
  6. Dalam jendela kode, mengganti kode berikut
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    dengan:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	Excel.Application oXL;
    	Excel._Workbook oWB;
    	Excel._Worksheet oSheet;
    	Excel.Range oRng;
    
    	try
    	{
    		//Start Excel and get Application object.
    		oXL = new Excel.Application();
    		oXL.Visible = true;
    
    		//Get a new workbook.
    		oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
    		oSheet = (Excel._Worksheet)oWB.ActiveSheet;
    
    		//Add table headers going cell by cell.
    		oSheet.Cells[1, 1] = "First Name";
    		oSheet.Cells[1, 2] = "Last Name";
    		oSheet.Cells[1, 3] = "Full Name";
    		oSheet.Cells[1, 4] = "Salary";
    
    		//Format A1:D1 as bold, vertical alignment = center.
    		oSheet.get_Range("A1", "D1").Font.Bold = true;
    		oSheet.get_Range("A1", "D1").VerticalAlignment = 
    			Excel.XlVAlign.xlVAlignCenter;
    		
    		// Create an array to multiple values at once.
    		string[,] saNames = new string[5,2];
    		
    		saNames[ 0, 0] = "John";
    		saNames[ 0, 1] = "Smith";
    		saNames[ 1, 0] = "Tom";
    		saNames[ 1, 1] = "Brown";
    		saNames[ 2, 0] = "Sue";
    		saNames[ 2, 1] = "Thomas";
    		saNames[ 3, 0] = "Jane";
    		saNames[ 3, 1] = "Jones";
    		saNames[ 4, 0] = "Adam";
    		saNames[ 4, 1] = "Johnson";
    
            	//Fill A2:B6 with an array of values (First and Last Names).
    	        oSheet.get_Range("A2", "B6").Value2 = saNames;
    
    		//Fill C2:C6 with a relative formula (=A2 & " " & B2).
    		oRng = oSheet.get_Range("C2", "C6");
    		oRng.Formula = "=A2 & \" \" & B2";
    
    		//Fill D2:D6 with a formula(=RAND()*100000) and apply format.
    		oRng = oSheet.get_Range("D2", "D6");
    		oRng.Formula = "=RAND()*100000";
    		oRng.NumberFormat = "$0.00";
    
    		//AutoFit columns A:D.
    		oRng = oSheet.get_Range("A1", "D1");
    		oRng.EntireColumn.AutoFit();
    
    		//Manipulate a variable number of columns for Quarterly Sales Data.
    		DisplayQuarterlySales(oSheet);
    
    		//Make sure Excel is visible and give the user control
    		//of Microsoft Excel's lifetime.
    		oXL.Visible = true;
    		oXL.UserControl = true;
    	}
    	catch( Exception theException ) 
    	{
    		String errorMessage;
    		errorMessage = "Error: ";
    		errorMessage = String.Concat( errorMessage, theException.Message );
    		errorMessage = String.Concat( errorMessage, " Line: " );
    		errorMessage = String.Concat( errorMessage, theException.Source );
    
    		MessageBox.Show( errorMessage, "Error" );
    	}
    }
    
    private void DisplayQuarterlySales(Excel._Worksheet oWS)
    {
    	Excel._Workbook oWB;
    	Excel.Series oSeries;
    	Excel.Range oResizeRange;
    	Excel._Chart oChart;
    	String sMsg;
    	int iNumQtrs;
    
    	//Determine how many quarters to display data for.
    	for( iNumQtrs = 4; iNumQtrs >= 2; iNumQtrs--)
    	{
    		sMsg = "Enter sales data for ";
    		sMsg = String.Concat( sMsg, iNumQtrs );
    		sMsg = String.Concat( sMsg, " quarter(s)?");
    
    		DialogResult iRet = MessageBox.Show( sMsg, "Quarterly Sales?", 
    			MessageBoxButtons.YesNo );
    		if (iRet == DialogResult.Yes)
    			break;
    	}
    
    	sMsg = "Displaying data for ";
    	sMsg = String.Concat( sMsg, iNumQtrs );
    	sMsg = String.Concat( sMsg, " quarter(s)." );
    
    	MessageBox.Show( sMsg, "Quarterly Sales" );
    
    	//Starting at E1, fill headers for the number of columns selected.
    	oResizeRange = oWS.get_Range("E1", "E1").get_Resize( Missing.Value, iNumQtrs);
    	oResizeRange.Formula = "=\"Q\" & COLUMN()-4 & CHAR(10) & \"Sales\"";
    
    	//Change the Orientation and WrapText properties for the headers.
    	oResizeRange.Orientation = 38;
    	oResizeRange.WrapText = true;
    
    	//Fill the interior color of the headers.
    	oResizeRange.Interior.ColorIndex = 36;
    
    	//Fill the columns with a formula and apply a number format.
    	oResizeRange = oWS.get_Range("E2", "E6").get_Resize( Missing.Value, iNumQtrs);
    	oResizeRange.Formula = "=RAND()*100";
    	oResizeRange.NumberFormat = "$0.00";
    
    	//Apply borders to the Sales data and headers.
    	oResizeRange = oWS.get_Range("E1", "E6").get_Resize( Missing.Value, iNumQtrs);
    	oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin;
    
    	//Add a Totals formula for the sales data and apply a border.
    	oResizeRange = oWS.get_Range("E8", "E8").get_Resize( Missing.Value, iNumQtrs);
    	oResizeRange.Formula = "=SUM(E2:E6)";
    	oResizeRange.Borders.get_Item( Excel.XlBordersIndex.xlEdgeBottom ).LineStyle 
    		= Excel.XlLineStyle.xlDouble;
    	oResizeRange.Borders.get_Item( Excel.XlBordersIndex.xlEdgeBottom ).Weight 
    		= Excel.XlBorderWeight.xlThick;
    
    	//Add a Chart for the selected data.
    	oWB = (Excel._Workbook)oWS.Parent;
    	oChart = (Excel._Chart)oWB.Charts.Add( Missing.Value, Missing.Value, 
    		Missing.Value, Missing.Value );
    
    	//Use the ChartWizard to create a new chart from the selected data.
    	oResizeRange = oWS.get_Range("E2:E6", Missing.Value ).get_Resize( 
    		Missing.Value, iNumQtrs);
    	oChart.ChartWizard( oResizeRange, Excel.XlChartType.xl3DColumn, Missing.Value,
    		Excel.XlRowCol.xlColumns, Missing.Value, Missing.Value, Missing.Value, 
    		Missing.Value, Missing.Value, Missing.Value, Missing.Value );
    	oSeries = (Excel.Series)oChart.SeriesCollection(1);
    	oSeries.XValues = oWS.get_Range("A2", "A6");
    	for( int iRet = 1; iRet <= iNumQtrs; iRet++)
    	{
    		oSeries = (Excel.Series)oChart.SeriesCollection(iRet);
    		String seriesName;
    		seriesName = "=\"Q";
    		seriesName = String.Concat( seriesName, iRet );
    		seriesName = String.Concat( seriesName, "\"" );
    		oSeries.Name = seriesName;
    	}														  
    	
    	oChart.Location( Excel.XlChartLocation.xlLocationAsObject, oWS.Name );
    
    	//Move the chart so as not to cover your data.
    	oResizeRange = (Excel.Range)oWS.Rows.get_Item(10, Missing.Value );
    	oWS.Shapes.Item("Chart 1").Top = (float)(double)oResizeRange.Top;
    	oResizeRange = (Excel.Range)oWS.Columns.get_Item(2, Missing.Value );
    	oWS.Shapes.Item("Chart 1").Left = (float)(double)oResizeRange.Left;
    }
    					
  7. Gulir ke atas jendela kode. Tambahkan berikut garis akhir daftar menggunakan Petunjuk:
    using Excel = Microsoft.Office.Interop.Excel;
    using System.Reflection; 
    					

Menguji klien otomasi

  1. Tekan F5 untuk membangun dan menjalankan program.
  2. Klik Button1 pada form. Program mulai Excel dan saran populates data pada baru lembar kerja.
  3. Saat Anda diminta untuk memasukkan data penjualan kuartalan, klik Ya. Bagan yang terkait dengan data kuartalan ditambahkan ke lembar kerja.

REFERENSI

Untuk informasi lebih lanjut, kunjungi berikut Microsoft Developer Situs Web Network (MSDN):
Microsoft Office Development with Visual Studio
http://msdn2.Microsoft.com/en-us/library/aa188489.aspx (http://msdn2.microsoft.com/en-us/library/aa188489.aspx)

Berlaku bagi:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
Kata kunci: 
kbpia kbautomation kbhowto kbmt KB302084 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:302084  (http://support.microsoft.com/kb/302084/en-us/ )