0

質問があります。アプリケーション内の PowerShell コマンドから出力したデータを収集するメソッド (dataCapture()) を作成し、データを解析してカンマ区切りを解読し、Oledb を使用して Excel の正しい行の下にデータを入力できるようにするにはどうすればよいでしょうか。と列?以下に、PowerShell アプリケーションのメソッドを添付します。ここでの助けやアイデアは大歓迎です!Excel OleDB は既に構築済みです。ヘルプは必要ありません。

public void runPS()
{
    //Run query
    PowerShell.Create().AddScript(diskInfo()).AddCommand("Out-String").Invoke<string>();

    foreach (string str in PowerShell.Create().AddScript(diskInfo()).AddCommand("Out-String").Invoke<string>())
    {
        dataCapture(str);
    }
}

public void dataCapture(string input)
{
    //Do some code using the input
    excelWrite(id, volId, idSpc, idTy)
}
 private void excelWrite(string id, string volId, int idSpc, int idTy)
{
    //Does the OleDb for excel
}
4

2 に答える 2

1

これは私が探していたものです:http: //msdn.microsoft.com/en-us/library/ms228388 (v=vs.80).aspx

static void Main()
{
    char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

    string text = "one\ttwo three:four,five six seven";
    System.Console.WriteLine("Original text: '{0}'", text);

    string[] words = text.Split(delimiterChars);
    System.Console.WriteLine("{0} words in text:", words.Length);

    foreach (string s in words)
    {
        System.Console.WriteLine(s);
    }
}
于 2012-06-23T21:56:59.567 に答える
0

PowerShell からほとんど何でも直接使用できます。Powershell で db クエリを実行したので、.NET でデータを解析することなく、powershell から直接 JET または OleDB を使用できると確信しています。

この記事では COM 自動化を使用しています: http://www.petri.co.il/export-to-excel-with-powershell.htm 。大量のデータを移動する必要がある場合は最適なソリューションではないかもしれませんが、数百行で動作します。

Powershell は非常に強力なので、そこからコードを呼び出してデータを渡すことができます。文字列だけでなく、複雑なオブジェクトもモード化します。

編集:

この Powershell スクリプトは Excel からの読み取りについて説明していますが、ほとんどの場合、OleDB に対して任意のコマンドを実行できるため、Excel にも挿入されます。

編集2:

コードを Powershell から直接呼び出すだけです :)

Powershell code:

Add-Type -Path "CallMeFromPowershell.dll"


$result = [CallMeFromPowershell.CallFromPS]::DoSomething("hello", 123)
$result

C# code:

using System;

namespace CallMeFromPowershell
{
    public static class CallFromPS
    {
        public static string DoSomething(string imAString, int imAnInt)
        {
            return String.Format(@"The string: '{0}', the integer: '{1}'", imAString, imAnInt);
        }
    }
}

出力はThe string: 'hello', the integer: '123'

于 2012-06-23T21:23:53.643 に答える