2012-04-06 12 views
0

Der Befehl $ cells Element 2 A {SomeText} setzt den Text in der Zelle A2 nicht, sondern weist den Text in der Zelle A1 zu. Irgendeine Idee warum es sich so verhält ???Angeben von Zellen in Excel mit TCOM

   set application [::tcom::ref createobject "Excel.Application"] 
       set XlFileFormat(xlCSV) [expr 6] 
       set workbooks [$application Workbooks] 
       set workbook [$workbooks Add] 
       $application DisplayAlerts False 
       set worksheets [$workbook Worksheets] 
       set worksheet [$worksheets Item [expr 1]] 
       set cells [$worksheet Cells] 
      $cells Item 2 A {Range} 


       $workbook SaveAs {c:\test.csv} $XlFileFormat(xlCSV)  
       $application Quit 
+0

Was macht es, wenn Sie verschiedene Nummern verwenden, z "4 A"? – Marc

+0

Es legt nur alles in die A1-Zelle .. Es ist wegen des CSV-Formats ich denke ... Nicht ziemlich sicher, warum das seltsam verhält ... – user1270123

+0

In diesem Beispiel kann ich nicht sehen, wie die Datei gespeichert wird. Zeile 2 setzt ein Mitglied eines Arrays auf eine ganze Zahl 6, das ist alles. Auf der anderen Seite fügen Sie eine Arbeitsmappe hinzu, fügen ein Blatt hinzu und ändern es anschließend. Ich habe das vage Gefühl, dass Excel etwas anderes speichert, wenn Sie ihm sagen, dass Sie das, was Sie ausgefüllt haben, speichern möchten, da CSV nur eine Matrix ist, nichts über Arbeitsblätter und Arbeitsmappen. – kostix

Antwort

1

Okay, hier ist eine Erklärung: Wenn in CSV zu speichern, scheint Excel nur die Daten zu speichern, die die „Bounding Box“ in den (virtuellen) -Folie Gittern bilden. Mit anderen Worten, Sie haben keine Daten in den Zellen der ersten Zeile geändert, und daher wird sie nicht gespeichert.

Dieses einfache Programm (JScript für WSH):

var app = new ActiveXObject("Excel.Application"); 
var wbs = app.Workbooks; 
var wb = wbs.Add; 
var wss = wb.Worksheets; 
var ws = wss.Item(1); 
var cells = ws.Cells; 

app.DisplayAlerts = false; 

cells.Item(2, "B") = "B2"; 
cells.Item(2, "C") = "C2"; 
cells.Item(3, "B") = "B3"; 
cells.Item(3, "C") = "C3"; 

wb.SaveAs("foo.csv", 6); 
app.Quit(); 

, die in einem rechteckigen Block um eine Spalte und eine Zeile von der linken oberen Ecke des Blattes versetzt angeordnet vier Zellen enthalten, erzeugt diese CSV-Datei :

B2,C2 
B3,C3