追記ばかりじゃ、ソースにインデントされないようなので、別回答として
ry_さんのソースでは、
CSV(ArrayList)に追加していっているので、
縦にしか並んでないと思います。
ClosedXMLにて、縦横の範囲で値をセットするには、
ジャグ配列(配列の配列または、配列のList)にする必要があるようですので、
以下のようにしたら、吐き出しました。
VB.Net
1 Dim CSV As New System.Collections.ArrayList()
2 Dim CSVData As New FileIO.TextFieldParser("C:\Temp\CSV.csv", System.Text.Encoding.GetEncoding(932))
3 CSVData.TextFieldType = FileIO.FieldType.Delimited
4 CSVData.Delimiters = New String() {","}
5 CSVData.HasFieldsEnclosedInQuotes = True
6 CSVData.TrimWhiteSpace = True
7
8 Dim outData As ArrayList
9 While Not CSVData.EndOfData
10 Dim fields As String() = CSVData.ReadFields()
11
12 outData = New ArrayList
13 For Each field In fields
14 If IsNumeric(field) Then
15 outData.Add(Decimal.Parse(field))
16 Else
17 outData.Add(field)
18 End If
19 Next
20 CSV.Add(outData.ToArray())
21
22 End While
23 CSVData.Close()
24
25 Dim book As New ClosedXML.Excel.XLWorkbook(ClosedXML.Excel.XLEventTracking.Disabled)
26 Dim sheet As ClosedXML.Excel.IXLWorksheet = book.Worksheets.Add("Sheet1")
27 sheet.Range("A1").Value = CSV
28 book.SaveAs("C:\Temp\XLSXSample.xlsx")
配列を使わない方法です。
VB.Net
1 Dim CSVData As New FileIO.TextFieldParser("C:\Temp\CSV.csv", System.Text.Encoding.GetEncoding(932))
2 CSVData.TextFieldType = FileIO.FieldType.Delimited
3 CSVData.Delimiters = New String() {","}
4 CSVData.HasFieldsEnclosedInQuotes = True
5 CSVData.TrimWhiteSpace = True
6
7 Dim book As New ClosedXML.Excel.XLWorkbook(ClosedXML.Excel.XLEventTracking.Disabled)
8 Dim sheet As ClosedXML.Excel.IXLWorksheet = book.Worksheets.Add("Sheet1")
9
10 Dim rowIndex As Integer = 0
11 While Not CSVData.EndOfData
12 rowIndex = rowIndex + 1
13
14 Dim fields As String() = CSVData.ReadFields()
15 Dim colIndex As Integer = 0
16 For Each field In fields
17 colIndex = colIndex + 1
18 If IsNumeric(field) Then
19 sheet.Cell(rowIndex, colIndex).Value = Decimal.Parse(field)
20 Else
21 sheet.Cell(rowIndex, colIndex).Value = field
22 End If
23 Next
24 End While
25 CSVData.Close()
26
27 book.SaveAs("C:\Temp\XLSXSample2.xlsx")
データすくないので、まったく処理速度の差はありませんでした。
100行程度に変えても速度変わりないです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/29 00:48