Avatar billede martinr Nybegynder
18. december 2012 - 22:50 Der er 1 kommentar og
1 løsning

Problemer med at åbne Excel-fil på netværksharddisk med C#.NET

Hej eksperter

Jeg prøver at åbne en Excel fil på min netværksharddisk med følgende kode:

            string fileName = @"\\MR-MYBOOK-WE\MyBook\Videoliste.xls";
            int row_start 1;
            int column_start = 1;
            int row_length = 10;
            int column_length = 10;

            ...             

            try
            {
                // create a new Application object
                Application oXL = new Application();
                // open workBook
                Workbook oWB = oXL.Workbooks.Open(fileName, Missing.Value, true, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

                // select the sheet
                Worksheet oSheet = oWB.Sheets.get_Item(1);
               
                // fetch data from each cell of the range:
                System.Data.DataTable dt = new System.Data.DataTable("dtExcel");
                for (int r = row_start; r <= row_length; r++)
                {
                    DataRow newrow = dt.NewRow();
                    for (int c = column_start; c <= column_length; c++)
                    {
                        // create each column:
                        if (r == row_start) { dt.Columns.Add(); }

                        Range oRng = oSheet.Cells[r, c];
                        string strComment = (oRng.Comment != null) ? " (Comment: " + oRng.Comment.Text(Missing.Value) + ")" : "";
                        string strText = oRng.Text.ToString();

                        newrow[c - 1] = strText + strComment;
                    }
                    dt.Rows.Add(newrow);
                }

                oWB.Close(false, Missing.Value, Missing.Value);
                oXL.Quit();

                using (DataSet ds = new DataSet())
                {
                    ds.Tables.Add(dt);
                    GridView1.DataSource = ds;
                    GridView1.DataBind();
                }
            }
            catch (Exception ex)
            {
                Label1.Text = ex.Message;
            }
            finally
            {
                Dispose();
            }

Det virker ikke på min server med IIS 7 - jeg får fejlen:

'\\MR-MYBOOK-WE\MyBook\Videoliste.xls' blev ikke fundet. Kontroller stavningen af filnavnet og placeringen af filen. Hvis du på menuen Filer prøver at åbne filen fra listen over de senest anvendte filer, skal du kontrollere, at filen ikke er omdøbt, flyttet eller slettet.

Men det virker fint, hvis jeg kører det i Visual Studio (???)
Baseret på søgninger på Google tror jeg, at det sandsynligvis har noget med access permissions at gøre, men jeg er ikke sikker.

Jeg har prøvet:
- at inkludere <identity impersontate="true" userName="..." password="..." /> med forskellige usernames/passwords i Web.config.
- at ændre rettigheder i Component Services (dcomcnfg) men kan ikke finde noget med Microsoft Excel under DCOM Config mappen.
- at kopiere Excel-filen over til websidens local directory, men så får jeg bare fejlen "Exception from HRESULT: 0x800A03EC" i stedet!

Håber meget, I kan hjælpe mig, da jeg er ved at rive hår ud af hovedet over dette her!

Jeg smider gerne flere point i, hvis det er.

På forhånd mange tak.
Avatar billede simsen Mester
25. december 2012 - 22:23 #1
Jeg aner ikke om det er det, men har du kigget på rettigheder for den pågældende mappe. Altså har den pågælende .net bruger adgang til mappen og ikke mindst filen?
Avatar billede martinr Nybegynder
27. december 2012 - 02:45 #2
Det er lykkedes mig at løse problemet selv, da jeg fandt ud af, at der faktisk skal oprettes en bruger på netværksharddisken med samme credentials (user/pass) som den aktive Windows-bruger, hvilket jeg ikke anede noget om. Info herom kan læses på http://aspalliance.com/336_Upload_Files_Using_ASPNET_Impersonation_and_UNC_Share (specielt page 2).

Tak, simsen, du får points'ene, da du kom tættest på det rigtige svar.
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
Kurser inden for grundlæggende programmering

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