Jeg sidder til tider og bikser med excel ark, og nogle gange er jeg nødt til, ad-hoc, at flytte data fra excel til evt. en database eller xml fil. At arbejde med excel fra .NET er noget bøvl synes, ihvertfald med de indbyggede COM objekter. Selvom vi har fået dynamics og optionelle parametre, synes jeg stadigvæk det halter.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;
namespace ExcelReader
{
class Program
{
static void Main(string[] args)
{
Application application = new Application();
Workbook workbook =
application.Workbooks.Open(@"C:\BloggersAndInfluencers.xlsx");
try
{
Worksheet worksheet =
(Worksheet)workbook.Worksheets.get_Item("Sheet1");
Range range = worksheet.get_Range("A1", "A100" );
foreach (Range item in range)
{
if(item.Value2 != null)
Console.WriteLine(item.Value2.ToString());
}
Console.ReadLine();
releaseObject(worksheet);
}
finally {
workbook.Close();
application.Quit();
releaseObject(workbook);
releaseObject(application);
}
}
private static void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
}
finally
{
GC.Collect();
}
}
}
}