DOBON.NETプログラミング道掲示板

■35169 / 親記事)  Urlにアクセスするとダウンロードされるファイルを捕まえる
  
□投稿者/ Wan 付き人(75回)-(2022/10/17(Mon) 17:03:25)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic VSTO Framework4.7.2] 
    分類:[.NET] 

    "https://f.irbank.net/files/1944/qq-net-sales.csv"
    上記のUrlにアクセスすると、csvファイルがダウンロードされます。
    このファイルを捕まえて、行単位でループさせたいです。
    次のコードでいけるかな?って思ったのですが、指定されたパスのフォーマットはサポートされていませんとでてしまいます。
    
    一旦Excelファイルに取り込んで、処理しているのですが、直接csvファイルを扱う方法を教えて頂けないでしょうか?
    Dim MyWorkBook As Excel.Workbook = Globals.ThisWorkbook.Application.Workbooks.Open("https://f.irbank.net/files/1944/qq-net-sales.csv")
    
    宜しくお願い致します。
    
    
    Dim sr As StreamReader = New   StreamReader("https://f.irbank.net/files/1944/qq-net-sales.csv")
    While Not sr.EndOfStream
      Dim line As String = sr.ReadLine()
       Dim values As String() = line.Split(","c)
       Dim lists As List(Of String) = New List(Of String)()
       lists.AddRange(values)
       For Each list As String In lists
        System.Console.Write("{0} ", list)
       Next
       System.Console.WriteLine()
    End While

マルチポストを報告
違反を報告
引用返信 削除キー/
■35170 / ResNo.1)  Re[1]: Urlにアクセスするとダウンロードされるファイルを捕まえる
□投稿者/ 魔界の仮面弁士 大御所(1455回)-(2022/10/17(Mon) 22:20:54)
  • アイコンNo35169に返信(Wanさんの記事)
    > 一旦Excelファイルに取り込んで、処理しているのですが、
    > 直接csvファイルを扱う方法を教えて頂けないでしょうか?

    えぇと……これはまた、なかなかに変則的な CSV データですね…?
    先頭 4 行が無ければ、 5 列構成の一般的な CSV と言えるのですが。


    ・文字コード:UTF-8 (BOM 無)
    ・改行種別:すべてのレコード末尾に LF 付与
    ・列数:行によって可変……珍しい
    ・空行:あり……0列とみなすべきか1列とみなすべきかが悩みどころ
    ・データ囲み引用符:「"」、ただし無いこともあるのでデータの一部として扱方が良さそう
    ・データ内改行:なし
    ・データ内カンマ:なし


    > System.Console.Write("{0} ", list)
    VSTO の場合、 Console が使えるとは限らないのでは…?


    > 直接csvファイルを扱う方法を教えて頂けないでしょうか?
    Tips ページのこのあたりで出来ませんでしたか?
    https://dobon.net/vb/dotnet/internet/webclientopenread.html
    https://dobon.net/vb/dotnet/internet/webrequest.html


    (案1) WebClient.DownloadString を使う

    Dim wc As New System.Net.WebClient()
    Dim rawData As String = wc.DownloadString("https://f.irbank.net/files/1944/qq-net-sales.csv")
    Dim csv()() As String = rawData.Split(ControlChars.Lf).Select(Function(line) line.Split(","c)).ToArray()


    (案2) My.Computer.Network.DownloadFile を使う

    Dim tmp = My.Computer.FileSystem.GetTempFileName()
    My.Computer.FileSystem.DeleteFile(tmp)
    My.Computer.Network.DownloadFile("https://f.irbank.net/files/1944/qq-net-sales.csv", tmp)
    Dim csv()() As String = File.ReadLines(tmp).Select(Function(line) line.Split(","c)).ToArray()
    My.Computer.FileSystem.DeleteFile(tmp)
違反を報告
引用返信 削除キー/
■35199 / ResNo.2)  Re[2]: Urlにアクセスするとダウンロードされるファイルを捕まえる
□投稿者/ Wan 付き人(76回)-(2022/10/25(Tue) 17:05:31)
  • アイコン返事が遅くなり申し訳ありません。
    教えて頂いた内容で、できました。
    ありがとうございました。

解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -