Code Beispiel in C#, VSTO Addin
Diese Beispiel zeigt wie man in C# Excel-Zellen lesen und auswerten kann.
Excel
Hier werden allen Zellen eines Excel-Blatts gelesen und als Meldung angezeigt.
C# Code
Unter der Datei Ribbon1.cs (Ribbonbar Beispiel)
Man muss zunächst das Office Paket in Visual Studio einbinden (Visual Studio For Office… VSTO COM usw)
using Microsoft.Office.Interop.Excel; |
Dann bindet man das aktuelle Excel Arbeitsblatt ein
Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet; |
Eine Zelle kann man wie hier auslesen.
Excel Zelle
Die Excel Zelle wird mit Cells[Reihe,Spalte] als Range gebunden
Microsoft.Office.Interop.Excel.Range cell = usedRange.Cells[1, iColumn] as Range; |
Zellwert lesen
Der angezeigte Wert in Excel wird eigentlich mit .Value2 ausgelesen.
Man sollte aber .Value2.ToString() verwenden, damit zur Laufzeit kein Umwandlungsfehler von integer int zu string erzeugt wird.
String sValue = cell.Value2.ToString(); |
Beim direkten Zugriff auf .Value2 zur Laufzeit entsteht oft der Fehler:
Fehlermeldung:
Der double-Typ kann nicht implizit in string konvertiert werden.
Gezeigtes Code-Beispiel in C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; using Microsoft.Office.Tools.Ribbon;
namespace ExcelAddIn01 { public partial class Ribbon1 { private void Ribbon1_Load(object sender, RibbonUIEventArgs e) {
}
private void btnExcel_load_Click(object sender, RibbonControlEventArgs e) { //< init > Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet; //</ init >
Range usedRange = worksheet.UsedRange; int nColumnsMax = 0; String sText = ""; if (usedRange.Rows.Count > 0) { //----< Read_Header >---- for (int iColumn = 1; iColumn <= usedRange.Columns.Count; iColumn++) { Microsoft.Office.Interop.Excel.Range cell = usedRange.Cells[1, iColumn] as Range; String sValue = cell.Value2;
if (sValue == "") break; sText = sText + Environment.NewLine + sValue; nColumnsMax = iColumn; } //----</ Read_Header >----
//----< Read_DataRows >---- for (int iRow = 2; iRow <= usedRange.Rows.Count; iRow++) { for (int iColumn = 1; iColumn < nColumnsMax; iColumn++) { Microsoft.Office.Interop.Excel.Range cell = usedRange.Cells[iRow, iColumn] as Range; String sValue = cell.Value2.ToString(); sText = sText + Environment.NewLine + sValue; } } //----</ Read_DataRows >---- }
MessageBox.Show(sText); } } }
|
Betrifft:
Lesen von Excel in Zelle mit Value Value2 FormularLocal
Programmatically, zur Laufzeit in Visual Studio VSTO Office Addin