如何解析和解除数据输出

时间:2012-06-23 20:58:28

标签: c# wpf

我有一个问题。我如何构建一个方法(dataCapture())来收集我在应用程序中从PowerShell命令输出的数据,然后解析数据并解密逗号分隔,以便它可以使用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
}

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

您可以直接使用PowerShell中的任何内容。我在powershell中做了一些db查询,所以我很确定你可以直接从powershell使用JET或OleDB,而无需在.NET中解析数据。

快速谷歌搜索,本文使用COM自动化:http://www.petri.co.il/export-to-excel-with-powershell.htm,如果您需要移动大量数据,可能不是最佳解决方案,但应该可以工作几百行。

Powershell非常强大,因此您可以从中调用代码,并将数据传递给它。不仅仅是字符串,还有模式复杂的对象。

编辑:

This Powershell script谈论从Excel读取,但很可能你可以执行任何命令到OleDB,所以它也插入到Excel中。

EDIT2:

直接从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'