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
Excel Datei Blatt Zellen einlesen in C#