这是我的第一篇文章 - 我很乐意对帖子中的任何错误进行任何必要的更正。
几个月来,我一直在浏览这里的论坛,学到了很多东西,但我似乎无法用我发现的东西实现我的目标。
我需要在CSV文件更改时读取该文件(只读(,并将生成的数组放入并激活并打开Excel 2016选项卡。 我可以使用com和system.io.watcherchangetypes来做到这一点,但这太慢了,需要复制粘贴。
我需要尽快(不到一秒(阅读 csv 并将这些行转换为可用于 Excel 的数组。 整个过程最多需要不到 2 秒。 随着时间的推移,一些CSV将超过180,000行。
我在一家贸易公司工作。
我会对单列、制表符分隔和多行感到满意。 我无法获得多行。
我必须逐行编写范围,这需要很长时间。
我正在看这个,但我不清楚如何使整个事情动态化。 没有固定数量的标题,行也会更改。 我根本无法使用任何静态数据。
这是促使我寻求帮助的帖子:如何使用Powershell对CSV列重新排序
$export = "\UNCtofileName.csv"
#$excel = New-Object -ComObject Excel.Application
#$excel.visible = $true
#$workbook = $excel.Workbooks.Add()
$reader = [System.IO.File]::OpenText($export)
$writer = New-Object System.IO.StreamWriter "data2.csv"
for(;;) {
$line = $reader.ReadLine()
if ($null -eq $line) {
break
}
$i=1
$data = $line.Split(",") | %{
if($_ -ne $null)
{
Write-Host $_ $i
++$i
}
}
[void]$data.Length
# $data.GetValue()
#$writer.WriteLine('{0},{1},{2}', $data[0], $data[1], $data[2])
}
$reader.Close()
#$writer.Close()
任何帮助将不胜感激!
更新:
我想通了。 结果可能不是最有效的,但它让我得到了我现在需要的东西,同时我探索如何用我所学到的东西更好地完成它。
(Measure-Command { $data = [System.io.File]::Open($export, 'Open', 'Read', 'ReadWrite')
$reader = New-Object System.IO.StreamReader($data)
$count = 0
While($text = $reader.Readline())
{
If($text -eq $null)
{
$reader.Close()
$data.close()
}
++$count
}
}).TotalSeconds
$array2 = New-Object 'object[,]' $count,1
$end = ++$count
$file = New-Object System.IO.StreamReader -ArgumentList $export
$stringBuilder = New-Object System.Text.StringBuilder
$list = New-Object System.Collections.Generic.List[System.String]
$a = 0
Measure-Command {
While ($i = $file.ReadLine() -Replace ",","`t")
{
if ($i -eq $null)
{
$file.close()
break loop
}
$null = $stringBuilder.Append($i)
$list.Add($i)
$array2[$a,0] = $i
++$a
}
$outputString = $stringBuilder.ToString()
$array = $list.ToArray()
}
你可以做这样的事情
data = pd.read_csv("data1.csv", sep='s+',header=None)
dataarraynew13phse = np.array(data)
dataarraynew13phse=dataarraynew13phse.flatten()
SEP = '\s+' 可用于解码多行中的选项卡 然后 flatten(( 可以在单行或数组中制作它