Mark DiGiovanni

Sponsors

The Lounge

Wicked Cool Jobs

News

Advertisement

Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at imagehelp@codebetter.com
Excel automation (interop) with the .NET Framework

***********************************************************************
UPDATE: 12/10/2003:
Related article: http://codebetter.com/blogs/mark.digiovanni/archive/2003/12/03/4199.aspx

Sample Code: http://www.weprogram.net/Materials/OfficeInterop.zip
***********************************************************************

I haven't found much information out there that addresses Excel automation for my needs.  Here is the scenario:

Standard reports that currently exist in Excel will need to be reused when migrating to the new .NET application.  My goal is to allow new reports to be added to the system without having to make any changes to the Excel output engine that I am creating.  If the customer later decides to add a report, all they should have to do is create it in Excel, name the cells, and add the Excel spreadsheet to the database.  Then call the report from wherever they decide.

The data database will have a table of report names and associated information and a related table to hold the cell names and the location of the cell's value.  The engine will take the spreadsheet name as a parameter, pull the spreadsheet information from the database, get the data to populate the sheet, and either output the results or maintain the results to output later after several spreadsheets are produced and inserted into a single workbook.

Here is my solution:

First, download the Office PIA's and set a reference in the project.  Then use the following code:

Imports msE = Microsoft.Office.Interop

Public Class OutputEngine

    Public Sub AutomationSample(ByVal spreadSheetName As String)

        Dim excelApp As New msE.Excel.ApplicationClass()

        'Get the workbook that contains the sheet to work with.
        'Change the Open method to point to the location of the spreadsheet
        excelApp.Workbooks.Open("C:\Projects\ExcelTest\testNamed.xls", System.Reflection.Missing.Value, _
        System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, _
        System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, _
        System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, _
        System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, _
        System.Reflection.Missing.Value)

        Dim wkbook As msE.Excel.WorkbookClass = excelApp.Workbooks(1)
        'Open the first worksheet.
        Dim wksheet As msE.Excel.Worksheet
        wksheet = wkbook.Sheets.Item(1)

       'Assuming that the cells are properly named, set the their values to their numerical equivalent.
       'The below code will be replaced with code to retrieve the data to place in the named cells.
        wksheet.Range("NamedCell1").Value = 1
        wksheet.Range("NamedCell2").Value = 2
        wksheet.Range("NamedCell3").Value = 3

        'Delete row 17 because we can :)
        wksheet.Rows(17).Delete(msE.Excel.XlDeleteShiftDirection.xlShiftUp)

        'This will launch the workbook into Excel.  Saving of the spreadsheet will have to be done
        'manually if the user decides to save it.
        excelApp.Visible = True

    End Sub
End Class

This allows the most flexibility when making changes to the spreadsheet or adding a new one to the system.  The customer can change the font, column width, etc. without the need of a developer on hand.

 


Posted Thu, Nov 6 2003 12:19 PM by Mark DiGiovanni

[Advertisement]

Comments

TrackBack wrote Excel automation (interop) with the .NET Framework
on Sat, Jan 29 2005 12:23 PM
TrackBack wrote WeProgram.NET Presentation: Office XP PIAs
on Sat, Jan 29 2005 12:27 PM
qwer wrote re: Excel automation (interop) with the .NET Framework
on Sat, Dec 9 2006 7:59 AM

http://tiny.pl/9mv1

http://tiny.pl/9mvj

http://tiny.pl/9mvp

http://tiny.pl/9mvl

http://tiny.pl/9mv4

http://tiny.pl/9mvk

http://tiny.pl/9mv2

http://tiny.pl/9mv8

http://tiny.pl/9mvs

http://tiny.pl/9mvz

http://tiny.pl/9mv3

http://tiny.pl/9mbq

http://tiny.pl/9mbx

http://tiny.pl/9mbm

http://tiny.pl/9mbt

http://tiny.pl/9mb7

http://tiny.pl/9mb9

http://tiny.pl/9mbs

http://tiny.pl/9mb6

http://tiny.pl/9mbv

http://tiny.pl/9mbb

http://tiny.pl/9mbz

http://tiny.pl/9mb3

http://tiny.pl/9mzh

http://tiny.pl/9mzq

http://tiny.pl/9mzx

http://tiny.pl/9mzm

http://tiny.pl/9mzg

http://tiny.pl/9mz7

http://tiny.pl/9mz9

http://tiny.pl/9mzw

http://tiny.pl/9mzd

http://tiny.pl/9mzn

http://tiny.pl/9mz2

http://tiny.pl/9mz8

http://tiny.pl/9mzs

http://tiny.pl/9mz6

http://tiny.pl/9mzb

http://tiny.pl/9mzz

http://tiny.pl/9mz3

http://tiny.pl/9m3h

http://tiny.pl/9m3q

http://tiny.pl/9m3x

http://tiny.pl/9m3m

http://tiny.pl/9m3g

http://tiny.pl/9m3t

http://tiny.pl/9m3r

http://tiny.pl/9m39

http://tiny.pl/9m3w

http://tiny.pl/9m3c

http://tiny.pl/9m3d

http://tiny.pl/9m3f

http://tiny.pl/9m35

http://tiny.pl/9m31

http://tiny.pl/9m3j

http://tiny.pl/9m3p

http://tiny.pl/9m3l

http://tiny.pl/9m34

http://tiny.pl/9m3n

http://tiny.pl/9m3k

http://tiny.pl/9m32

http://tiny.pl/9m38

http://tiny.pl/9m3s

http://tiny.pl/9m36

http://tiny.pl/9m3v

http://tiny.pl/9ghh

http://tiny.pl/9ghq

http://tiny.pl/9ghm

http://tiny.pl/9ghg

http://tiny.pl/9ght

http://tiny.pl/9gh7

http://tiny.pl/9ghr

http://tiny.pl/9ghw

http://tiny.pl/9ghc

http://tiny.pl/9ghd

http://tiny.pl/9ghf

http://tiny.pl/9gh5

http://tiny.pl/9gh1

http://tiny.pl/9ghj

http://tiny.pl/9ghp

http://tiny.pl/9ghl

http://tiny.pl/9gh4

http://tiny.pl/9ghn

http://tiny.pl/9ghk

http://tiny.pl/9gh2

http://tiny.pl/9gh8

http://tiny.pl/9ghs

http://tiny.pl/9gh6

http://tiny.pl/9ghv

http://tiny.pl/9ghb

http://tiny.pl/9ghz

http://tiny.pl/9gqh

http://tiny.pl/9gqq

http://tiny.pl/9gqx

http://tiny.pl/9gqm

http://tiny.pl/9gqg

http://tiny.pl/9gqt

http://tiny.pl/9gq7

http://tiny.pl/9gqr

http://tiny.pl/9gq9

http://tiny.pl/9gqc

http://tiny.pl/9gqd

http://tiny.pl/9gq5

http://tiny.pl/9gq1

http://tiny.pl/9gqj

http://tiny.pl/9gqp

http://tiny.pl/9gql

http://tiny.pl/9gq4

http://tiny.pl/9gqn

http://0rz.tw/782bw

http://0rz.tw/f92ac

http://0rz.tw/0628d

http://0rz.tw/ca29L

http://0rz.tw/1c29n

http://0rz.tw/1129l

http://0rz.tw/772bC

http://0rz.tw/052bu

http://0rz.tw/792cj

http://0rz.tw/8c2cW

http://0rz.tw/1f2ce

http://0rz.tw/542ai

http://0rz.tw/2429n

http://0rz.tw/be2a6

http://0rz.tw/742dN

http://0rz.tw/4c281

http://0rz.tw/622aS

http://0rz.tw/502bR

http://0rz.tw/c12aB

http://0rz.tw/2228T

http://0rz.tw/ae2bw

http://0rz.tw/a72du

http://0rz.tw/042br

http://0rz.tw/582aI

http://0rz.tw/042bs

http://0rz.tw/e52b8

http://0rz.tw/652cr

http://0rz.tw/ac2dF

http://0rz.tw/192b6

http://0rz.tw/5329g

http://0rz.tw/c12aC

http://0rz.tw/1c29o

http://0rz.tw/b12a1

http://0rz.tw/5e2bi

http://0rz.tw/f429K

http://0rz.tw/162aa

http://0rz.tw/3b2bF

http://0rz.tw/ac2dG

http://0rz.tw/9128t

http://0rz.tw/a52c3

http://0rz.tw/3428c

http://0rz.tw/552b0

http://0rz.tw/832a8

http://0rz.tw/0a2d9

http://0rz.tw/d02ad

http://0rz.tw/2d2cI

http://0rz.tw/9629A

http://0rz.tw/6c2cg

http://0rz.tw/8a28l

http://0rz.tw/702be

http://0rz.tw/a42b8

http://0rz.tw/6029l

http://0rz.tw/5b2bv

http://0rz.tw/b52b9

http://0rz.tw/082cu

http://0rz.tw/f22aH

http://0rz.tw/312bn

http://0rz.tw/b32aZ

http://0rz.tw/1129m

http://0rz.tw/512b1

http://0rz.tw/422cp

http://0rz.tw/6e29a

http://0rz.tw/6029m

http://0rz.tw/852a7

http://0rz.tw/9329W

http://0rz.tw/de2bz

http://0rz.tw/192b7

http://0rz.tw/f727x

http://0rz.tw/392aZ

http://0rz.tw/ed2cv

http://0rz.tw/632ak

http://0rz.tw/a72dw

http://0rz.tw/ed2cx

http://0rz.tw/bd29V

http://0rz.tw/b229s

http://0rz.tw/4327i

http://0rz.tw/902cg

http://0rz.tw/cc2bc

http://0rz.tw/aa2aG

http://0rz.tw/472ce

http://0rz.tw/d628Q

http://0rz.tw/f12a5

http://0rz.tw/5929r

http://0rz.tw/8d2ac

http://0rz.tw/d127X

http://0rz.tw/8d2ad

http://0rz.tw/fa2bq

http://0rz.tw/522bq

http://0rz.tw/4a29S

http://0rz.tw/e42c7

http://0rz.tw/d628R

http://0rz.tw/162ab

http://0rz.tw/1e2ag

http://0rz.tw/582aJ

http://0rz.tw/ea29z

http://0rz.tw/162ac

http://0rz.tw/3428d

http://0rz.tw/7e2a4

http://0rz.tw/b02ao

http://0rz.tw/282aS

http://0rz.tw/cf2cq

http://0rz.tw/902ch

http://0rz.tw/cc2bd

http://0rz.tw/b02ap

http://0rz.tw/582aK

http://0rz.tw/bd29W

http://0rz.tw/472cf

http://0rz.tw/0e2ap

http://0rz.tw/6a2cc

http://0rz.tw/7a2at

http://0rz.tw/9128w

http://kat.cc/6e9c

http://kat.cc/607b

http://kat.cc/616b

http://kat.cc/58aa

http://kat.cc/bee7

http://kat.cc/3619

http://kat.cc/3f23

http://kat.cc/aba7

http://kat.cc/a8b1

http://kat.cc/f7a3

http://kat.cc/80a4

http://kat.cc/1cf9

http://kat.cc/4cb8

http://kat.cc/99b2

http://kat.cc/514b

http://kat.cc/762

http://kat.cc/4f4a

http://kat.cc/755

http://kat.cc/c7be

http://kat.cc/83df

http://kat.cc/ea89

http://kat.cc/9986

http://kat.cc/f176

http://kat.cc/f05a

http://kat.cc/5a0e

http://kat.cc/a7e9

http://kat.cc/1fc7

http://kat.cc/da14

http://kat.cc/2dbc

http://kat.cc/b26f

http://kat.cc/d054

http://kat.cc/cad4

http://kat.cc/4bfd

http://kat.cc/bbda

http://kat.cc/e0bf

http://kat.cc/8013

http://kat.cc/bd27

http://kat.cc/d3f7

http://kat.cc/31c4

http://kat.cc/61dd

http://kat.cc/43c5

http://kat.cc/be60

http://kat.cc/a19f

http://kat.cc/953a

http://kat.cc/a81d

http://kat.cc/744

http://kat.cc/d18e

http://kat.cc/ca08

http://kat.cc/d2d1

http://kat.cc/d818

http://kat.cc/d3a9

http://kat.cc/77a9

http://kat.cc/c791

http://kat.cc/2e14

http://kat.cc/d95e

http://kat.cc/e679

http://kat.cc/f387

http://kat.cc/4204

http://kat.cc/644d

http://kat.cc/4448

http://kat.cc/1568

http://kat.cc/2ca

http://kat.cc/4e64

http://kat.cc/6a12

http://kat.cc/5314

http://kat.cc/f882

http://kat.cc/40f

http://kat.cc/7861

http://kat.cc/272d

http://kat.cc/83d4

http://kat.cc/a2a8

http://kat.cc/e263

http://kat.cc/6bfe

http://kat.cc/4cbb

http://kat.cc/fe67

http://kat.cc/b0bf

http://kat.cc/7fdd

http://kat.cc/1b79

http://kat.cc/4502

http://kat.cc/d791

http://kat.cc/745a

http://kat.cc/7020

http://kat.cc/7445

http://kat.cc/3957

http://kat.cc/755d

http://kat.cc/3b93

http://kat.cc/1d18

http://kat.cc/3ab3

http://kat.cc/d3cd

http://kat.cc/82db

http://kat.cc/2662

http://kat.cc/8db2

http://kat.cc/8629

http://kat.cc/6609

http://kat.cc/2328

http://kat.cc/f69e

http://kat.cc/fed1

http://kat.cc/537e

http://kat.cc/f49

http://kat.cc/bdd

http://kat.cc/acef

http://kat.cc/bd0

http://kat.cc/2b57

http://kat.cc/55b0

http://kat.cc/1484

http://kat.cc/7e5a

http://kat.cc/c9bd

http://kat.cc/2a99

http://kat.cc/71cd

http://kat.cc/1ee1

http://kat.cc/6ba7

http://forum.lixium.fr/cgi-bin/liste.eur?amateur0

http://forum.lixium.fr/cgi-bin/liste.eur?anal0

http://forum.lixium.fr/cgi-bin/liste.eur?anime0

http://forum.lixium.fr/cgi-bin/liste.eur?asian0

http://forum.lixium.fr/cgi-bin/liste.eur?bbw0

http://forum.lixium.fr/cgi-bin/liste.eur?bdsm0

http://forum.lixium.fr/cgi-bin/liste.eur?bigboob0

http://forum.lixium.fr/cgi-bin/liste.eur?bigcock0

http://forum.lixium.fr/cgi-bin/liste.eur?bigtits0

http://forum.lixium.fr/cgi-bin/liste.eur?bisexual

http://forum.lixium.fr/cgi-bin/liste.eur?bizarre0

http://forum.lixium.fr/cgi-bin/liste.eur?black0

http://forum.lixium.fr/cgi-bin/liste.eur?blondes0

http://forum.lixium.fr/cgi-bin/liste.eur?blowjob0

http://forum.lixium.fr/cgi-bin/liste.eur?bondage0

http://forum.lixium.fr/cgi-bin/liste.eur?brunett0

http://forum.lixium.fr/cgi-bin/liste.eur?busty0

http://forum.lixium.fr/cgi-bin/liste.eur?cartoon0

http://forum.lixium.fr/cgi-bin/liste.eur?center0

http://forum.lixium.fr/cgi-bin/liste.eur?cumshot0

http://forum.lixium.fr/cgi-bin/liste.eur?doggy0

http://forum.lixium.fr/cgi-bin/liste.eur?double0

http://forum.lixium.fr/cgi-bin/liste.eur?drunkgi0

http://forum.lixium.fr/cgi-bin/liste.eur?ebony0

http://forum.lixium.fr/cgi-bin/liste.eur?ethnic0

http://forum.lixium.fr/cgi-bin/liste.eur?facial0

http://forum.lixium.fr/cgi-bin/liste.eur?fat0

http://forum.lixium.fr/cgi-bin/liste.eur?feet0

http://forum.lixium.fr/cgi-bin/liste.eur?femdom0

http://forum.lixium.fr/cgi-bin/liste.eur?fetish0

http://forum.lixium.fr/cgi-bin/liste.eur?gangban0

http://forum.lixium.fr/cgi-bin/liste.eur?gayanal0

http://forum.lixium.fr/cgi-bin/liste.eur?gayanime

http://forum.lixium.fr/cgi-bin/liste.eur?gayasia0

http://forum.lixium.fr/cgi-bin/liste.eur?gaybear0

http://forum.lixium.fr/cgi-bin/liste.eur?gayblac0

http://forum.lixium.fr/cgi-bin/liste.eur?gayblow0

http://forum.lixium.fr/cgi-bin/liste.eur?gayboy0

http://forum.lixium.fr/cgi-bin/liste.eur?gaycart0

http://forum.lixium.fr/cgi-bin/liste.eur?gaycock0

http://forum.lixium.fr/cgi-bin/liste.eur?gaycoll0

http://forum.lixium.fr/cgi-bin/liste.eur?gaycum0

http://forum.lixium.fr/cgi-bin/liste.eur?gaydati0

http://forum.lixium.fr/cgi-bin/liste.eur?gayebon0

http://forum.lixium.fr/cgi-bin/liste.eur?gaychat0

http://forum.lixium.fr/cgi-bin/liste.eur?gaysex0

http://forum.lixium.fr/cgi-bin/liste.eur?gayfuck0

http://forum.lixium.fr/cgi-bin/liste.eur?gayhairy

http://forum.lixium.fr/cgi-bin/liste.eur?gayhenta

http://forum.lixium.fr/cgi-bin/liste.eur?gayhunks

http://forum.lixium.fr/cgi-bin/liste.eur?gaylatin

http://forum.lixium.fr/cgi-bin/liste.eur?gaymale0

http://forum.lixium.fr/cgi-bin/liste.eur?gaymanga

http://forum.lixium.fr/cgi-bin/liste.eur?gaymatur

http://forum.lixium.fr/cgi-bin/liste.eur?gaymen0

http://forum.lixium.fr/cgi-bin/liste.eur?gaymovie

http://forum.lixium.fr/cgi-bin/liste.eur?gaymuscl

http://forum.lixium.fr/cgi-bin/liste.eur?gayolder

http://forum.lixium.fr/cgi-bin/liste.eur?gayperso

http://forum.lixium.fr/cgi-bin/liste.eur?gaypics0

http://forum.lixium.fr/cgi-bin/liste.eur?gayporn0

http://forum.lixium.fr/cgi-bin/liste.eur?gaysex0

http://forum.lixium.fr/cgi-bin/liste.eur?gayteen0

http://forum.lixium.fr/cgi-bin/liste.eur?gaytwink

http://forum.lixium.fr/cgi-bin/liste.eur?gayvideo

http://forum.lixium.fr/cgi-bin/liste.eur?gaywebca

http://forum.lixium.fr/cgi-bin/liste.eur?hairyman

http://forum.lixium.fr/cgi-bin/liste.eur?male0

http://forum.lixium.fr/cgi-bin/liste.eur?nakedman

http://forum.lixium.fr/cgi-bin/liste.eur?younggay

http://forum.lixium.fr/cgi-bin/liste.eur?group0

http://forum.lixium.fr/cgi-bin/liste.eur?hairygir

http://forum.lixium.fr/cgi-bin/liste.eur?handjob0

http://forum.lixium.fr/cgi-bin/liste.eur?hardsex

http://forum.lixium.fr/cgi-bin/liste.eur?hentai0

http://forum.lixium.fr/cgi-bin/liste.eur?hotgirl0

http://forum.lixium.fr/cgi-bin/liste.eur?hotguy0

http://forum.lixium.fr/cgi-bin/liste.eur?indian0

http://forum.lixium.fr/cgi-bin/liste.eur?interrac

http://forum.lixium.fr/cgi-bin/liste.eur?latino0

http://forum.lixium.fr/cgi-bin/liste.eur?legs0

http://forum.lixium.fr/cgi-bin/liste.eur?lesbian0

http://forum.lixium.fr/cgi-bin/liste.eur?live0

http://forum.lixium.fr/cgi-bin/liste.eur?manga0

http://forum.lixium.fr/cgi-bin/liste.eur?masturba

http://forum.lixium.fr/cgi-bin/liste.eur?mature0

http://forum.lixium.fr/cgi-bin/liste.eur?milf0

http://forum.lixium.fr/cgi-bin/liste.eur?olderwom

http://forum.lixium.fr/cgi-bin/liste.eur?oral0

http://forum.lixium.fr/cgi-bin/liste.eur?orgy0

http://forum.lixium.fr/cgi-bin/liste.eur?panties0

http://forum.lixium.fr/cgi-bin/liste.eur?pantyhos

http://forum.lixium.fr/cgi-bin/liste.eur?petite0

http://forum.lixium.fr/cgi-bin/liste.eur?pornmovi

http://forum.lixium.fr/cgi-bin/liste.eur?pornstar

http://forum.lixium.fr/cgi-bin/liste.eur?pornvide

http://forum.lixium.fr/cgi-bin/liste.eur?reality0

http://forum.lixium.fr/cgi-bin/liste.eur?redhead0

http://forum.lixium.fr/cgi-bin/liste.eur?sextoys0

http://forum.lixium.fr/cgi-bin/liste.eur?sexvids

http://forum.lixium.fr/cgi-bin/liste.eur?shaved0

http://forum.lixium.fr/cgi-bin/liste.eur?shemale0

http://forum.lixium.fr/cgi-bin/liste.eur?smoking0

http://forum.lixium.fr/cgi-bin/liste.eur?spanking

http://forum.lixium.fr/cgi-bin/liste.eur?teen0

http://forum.lixium.fr/cgi-bin/liste.eur?tranny0

http://forum.lixium.fr/cgi-bin/liste.eur?transsex

http://forum.lixium.fr/cgi-bin/liste.eur?upskirt0

http://forum.lixium.fr/cgi-bin/liste.eur?voyeur0

http://forum.lixium.fr/cgi-bin/liste.eur?webcams0

http://forum.lixium.fr/cgi-bin/liste.eur?young0

big sky web cams wrote big sky web cams
on Thu, Aug 2 2007 4:02 AM

Excel automation (interop) with the .NET Framework

Devlicio.us