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

Skriva till Excel

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

Dela detta inlägg


Länk till inlägg
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?

Dela detta inlägg


Länk till inlägg
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()

Redigerad av .M

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...