Copy Past nach Excel mit Tabulator

12/11/2007 - 10:01 von Pascal Suter | Report spam
Hallo zusammen

Ich möchte einen Text via Clipboard ins Excel kopieren:

Clipboard.SetText("mein Kopier Text");
Range cellRange = tmpCurrentWorksheet.get_Range("B3", "B3");
tmpCurrentWorksheet.Paste(cellRange, false);

Nun möchte ich aber gleich zwei Spalten beschreiben und in der
Clipboard.setText methode beide STring mitgeben, so in dem Stil:


Clipboard.SetText("mein Kopier Text" + "\t" + "Text für Spalte
B");
Range cellRange = tmpCurrentWorksheet.get_Range("B3", "C3");
tmpCurrentWorksheet.Paste(cellRange, false);


Klappt aber nicht, da der \t in Spaces umgewandelt wird. Benutze ich statt
"\t" "\\t", dann steht im Excel einfach im Feld B3: "mein Kopier Text \t
Text für Spalte B"

Ist für mich nicht logisch, wenn ich im Notepad den Text schreibe und ein
Tabulator verwende und das ganze mit copy/past ins Excel kopiere, dann
gehts ja auch.

Weiss jemand wie ich das Problem lösen kann?
Danke für die Hilfe!
Grüsse
 

Lesen sie die antworten

#1 Frank Dzaebel
12/11/2007 - 20:44 | Warnen spam
Hallo Pascal,

Hmm, wàre schön, wenn Du die Postings
(wie das vom 5.11.) abschliessen könntest. Ein
Feedback hat geklappt oder àhnlich.


Ich möchte einen Text via Clipboard ins Excel kopieren:
Clipboard.SetText("mein Kopier Text");
Range cellRange = tmpCurrentWorksheet.get_Range("B3", "B3");
tmpCurrentWorksheet.Paste(cellRange, false);
Nun möchte ich aber gleich zwei Spalten beschreiben und in der
Clipboard.setText methode beide STring mitgeben ...



Folgendes klappt sowohl Dein Code, als
auch folgender:

private void Form1_Load(object sender, EventArgs e)
{
string path = Path.GetFullPath(@"Mappe1.xlsx");
Excel.Application app = new Excel.Application();
Workbook wb = (Workbook)Call(app.Workbooks, "Open", path);
int firstSheet = 1;
Worksheet sheet = (Worksheet)wb.Worksheets[firstSheet];
Range rangeA = sheet.get_Range("B3", "B3");

const int anz = 20;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < anz; i += 2)
{
sb.AppendFormat("Wert{0}\t", i);
sb.AppendFormat("Wert{0}", i + 1);
}
Clipboard.SetText(sb.ToString());
sheet.Paste(rangeA.Cells[2, 1], false);
app.Visible = true;
}


/// <summary>Call method with optional parameters</summary>
private object Call(object target, string methodName,
params object[] parameters)
{
return target.GetType().InvokeMember(methodName,
BindingFlags.InvokeMethod |
BindingFlags.OptionalParamBinding,
null, target, parameters);
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen