Avatar billede koppelgaard Praktikant
22. januar 2008 - 18:57 Der er 12 kommentarer og
1 løsning

Excel og C#

Har brug for at skrive og læse fra en existerende excelfil.

Jeg er gået frem efter:
http://support.microsoft.com/kb/302084

Jeg HAR tilføjet referencen til Microsoft Excel 11.0 Object Library
men C# lader ikke til at kende namespacet Excel i feks følgende linie:
Excel.Application oXL;

Er der mon noget galt med min c# Installation (2005)

Michael
Avatar billede ladyhawke Novice
22. januar 2008 - 19:02 #1
har du installeret de PIA's du skal bruge? (afhænger af din office version og hvad du har installeret (fuld install i office 2003 giver PIA's)
Avatar billede ladyhawke Novice
22. januar 2008 - 19:02 #2
nå ja og har du husket et using statement til excel?
Avatar billede koppelgaard Praktikant
22. januar 2008 - 21:30 #3
PIA har jeg ikke bevist installeret. Hvordan tjekker jeg om jeg har den.
Jeg har dog mener jeg lavet en fuld 2003 installation.

Jeg har i referencer en til Microsoft.Office.Core
Dette er min kode:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace ReadWriteExcel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, 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");
            }
        }
    }
}
Lukker for idag men hvis du har lidt hjælp til i morgen formiddag så er jeg taknemmelig.
Jeg kan lige prøve den samme kode på arbejde.

Michael
Avatar billede Syska Mester
22. januar 2008 - 23:45 #4
Som ladyhawke skriver ... lader du til at mangle en using ....

Punkt 7 fra dit eget link ....

7.    Scroll to the top of the code window. Add the following line to the end of the list of using directives:

using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
                   

// oUT
Avatar billede jeppekristensen Nybegynder
23. januar 2008 - 01:47 #5
For det første. Det samme som Ladyhawke og buzzzz skriver. Og jeg kunne sagtens forestille mig at du får det til at virke ved at tilføje using-direktiverne.

men...

Jeg har har selv haft lignende problemer og i den guide du refererer til (og jeg mener endda selv jeg har fulgt den engang),står der at det gælder Visual C#.Net og hvis du bladrer helt ned i bunden står der "Applies to c# 2003 og 2002".

Jeg tror derfor følgende 2 ting:

1. Det gælder måske kun til express-udgaven (hvis du nu har Visual Studio)
2. Kunne godt forestille mig at artiklen måske er en smule forældet.

Og jeg tror du kommer til at importerer en forkert COM-refference, så du kan muligvis ikke skrive using Excel = Microsoft.Office.Interop.Excel. Hvis det er tilfældet skal du nok lede efter dem på nettet (PIA).

Som en sidenote. I visual studio 2008 er det gjort betydeligt mere for at gøre det lettere at lave programmer til Officeprodukter. Der er simpelthen templates til at gøre det.
Avatar billede Syska Mester
23. januar 2008 - 02:36 #6
VSTO ... Visual Studio Tools for Office ... mener jeg det hedder ...

Det er det super duber nemt(lader det til fra mange) .... det var også noget til 2003, men mener det kostede penge ... har ikke selv brugt det, men et firma har lavet et plugin mellem Outlook og Navion ...

// oUT
Avatar billede ladyhawke Novice
23. januar 2008 - 05:56 #7
VSTO var også en download til Visual Studio for office 2003 og man kan lave Office 2003 lave løsninger med den nyeste udgave af VSTO, bare man har PIA'erne installeret.

Dem kan man faktisk hente: http://www.microsoft.com/downloads/details.aspx?FamilyId=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&displaylang=en

Der er også mere information her: http://msdn2.microsoft.com/en-us/library/aa159923(office.11).aspx
Avatar billede koppelgaard Praktikant
23. januar 2008 - 07:56 #8
1000 tak for svarene alle!!
Det var dog ganske overvældende med al den respons!

Og jeg havde glemt
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
Shame on me. Jeg skal straks prøve det når jeg kommer hjem

Jeg har IKKE express udgaven.
Jeg er meget begejstret for at tingene gøres meget nemmere i 2008. Jeg kunne tænke mig at downloade 2008 EXPRESS i aften, og prøve.
Er der også templades her ?

"VSTO var også en download til Visual Studio for office 2003" Det behøver jeg ikke  hvis jeg har visual studio C# 2005 eller 2008 express ??

Jeg vender tilbage i aften..
Avatar billede ladyhawke Novice
23. januar 2008 - 08:10 #9
VSTO er indbygget i VS 2008 i den fulde version, jeg ved ikke om det gælder for express, men det kan du sikkert hurtigt finde ud af...
Avatar billede koppelgaard Praktikant
23. januar 2008 - 08:52 #10
Her på arbejde virker det glimrende - hvis jeg tilføjer namespacet som buzzzz skriver.
Avatar billede koppelgaard Praktikant
23. januar 2008 - 09:57 #11
Ved nogen om man kan embed'te en eksisterende excelfil i en form.? EVT i 2008
Avatar billede koppelgaard Praktikant
23. januar 2008 - 17:09 #12
Jeps nu har jeg prøver herhjemme.
Jeg havde overset pkt 7.

Jeg prøver 2008.
Tak for hjælpen - ALLE
Avatar billede koppelgaard Praktikant
04. februar 2008 - 09:47 #13
Der er ingen templatedes i VS Express 2008.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester