Just nu i M3-nätverket
Gå till innehåll

Skriva till Excel


schteiff

Rekommendera Poster

Hej!

 

Jag skulle behöva hjälp med att lösa ett problem. Här är förutsättningarna:

 

Jag har hämtat ut två värden från en webbsida och lagt i två variabler. Nu ska dessa båda värden läggas in i ett Excel-ark. Detta ska ske genom att lägga in dem på en ny rad i ett befintligt ark.

 

Målet är att få detta att ske automatiskt en gång per dygn med hjälp av t.ex. Windows scheduler - hämta värden, öppna befintligt Excel-ark, hitta ny ledig rad, skriv in värdena i varsin cell, spara arket.

 

Hur ska jag angripa problemet? Jag har letat lite på Google efter kodexempel, men inte hittat något tillämpligt ännu. Här är några problem med exemplen:

  • Exemplen brukar utgå från Microsoft.Office.Interop.Excel som kräver att Excel finns installerat på maskinen det ska köras på, vilket känns som en begränsning.
  • Det brukar också handla om att skicka ett dataset eller en datatable till Excel, men jag har ju bara två enstaka värden.
  • Jag har heller inte hittat något exempel där man skriver till en redan befintlig fil, de utgår alltid från att man skapar en ny Excel-fil som man skriver till, men det vill ju inte jag.

 

Tacksam för hjälp och förslag på lösning!

 

/ Stefan

Länk till kommentar
Dela på andra webbplatser

Imho mycket mycket mycket enklare att skriva värdena till en komma, eller tabb-separerad, textfil, dvs CVS.

 

En fil som sedan Excel med enkelhet kan importera.

Att vara beroende av tredjeparts applikation är omständigt. Mellanlagra i textfil.

 

kan det fungera, duger det?

Länk till kommentar
Dela på andra webbplatser

Jag hade löst det med powershell istället för en websida, då det är att föredra när du automatiserar saker och ting. Detta script jag satt ihop kommer att skriva Hello World på den första tomma raden.

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$WB = $excel.Workbooks.Open("C:\Users\xxxx\Downloads\Book1.xlsx")
$WS = $WB.ActiveSheet
For($i = 1; $i -lt 9; $i++) {
    If($WS.Cells.Item($i, 1).Text.Length -eq 0) {
        $WS.Cells.Item($i, 1) = "Hello, World"
        break
    }
}

$WB.Save()
$WB.Close()
$excel.Quit()

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...