带有来自其他数据集的标头的多个csv [英] Multiple csv with header from other dataset

查看:77
本文介绍了带有来自其他数据集的标头的多个csv的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码;我可以从数据库导出数据,但我想为每行数据创建多个csv文件。



私有函数SetProperties(ByVal名称,ByVal值)作为对象

Dim objServiceManager As Object

Dim objStruct As Object

objServiceManager = CreateObject(com.sun.star.ServiceManager)

objStruct = objServiceManager.Bridge_GetStruct(com.sun.star.beans.PropertyValue)

objStruct.Name = Name

objStruct.Value = Value

SetProperties = objStruct

结束功能

Public Sub ExportCSV()

Dim counter As Integer = 1

while counter< = frmExtract.DataGridView1.RowCount

Dim strFilename As String =test&counter&.csv

Dim Csv As New Exporter()

使用CsvWriter作为新的StreamWriter(C:\Documents and Settings \frgits9 \\Desktop \harold_files\test_folder \&strFilename)

CsvWriter.Write(Csv.CsvFromDatatable(GetSampleData()))

结束使用

柜台+ = 1

cn.Close()

结束时

End Sub

- ------------------

公共函数GetSampleData()As DataTable

conn()

Dim da As New SqlDataAdapter(spOutBoundProoflist,cn)

Dim ProoflistData As New DataSet()

da.Fill(ProoflistData,Prooflist)

返回ProoflistData.Tables(0)

cn.Close()

结束功能

------- --------

公共函数GetSampleData2()As DataTable

conn()

Dim da As New SqlDataAdapter(spgetheader ,cn)

Dim Prooflistheader作为新数据集()

da.Fill(Prooflistheader,Prooflistheader)

返回Prooflistheader.Tables(0)

cn.Close()

结束功能

------- -----------------

公共类出口商

Public Sub New()

TextDelimiter =|c

HasColumnHeaders = True

结束子

公共财产TextDelimiter()作为Char

获取

返回_TextDelimiter

结束获取

设置(ByVal值为Char)

_TextDelimiter = value

结束集

结束财产

公共财产HasColumnHeaders()作为布尔值

获取

返回_HasColumnHeaders

结束获取

设置(ByVal值为布尔值)

_HasColumnHeaders = value

结束集

结束物业

公共函数CsvFromDatatable(ByVal InputTable As DataTable)As String

Dim CsvBuilder As New StringBuilder()

If HasColumnHeaders Then

CreateHeader(InputTable,CsvBuilder) )

结束如果

CreateRows(InputTable,CsvBuilder)

返回CsvBuilder.ToString()

结束函数

Private Sub CreateRows(ByVal InputTable As DataTable,ByVal CsvBuilder As StringBuilder)

For Each ExportRow As DataRow In InputTable.Rows

For Each ExportColumn As InputTable.Columns中的DataColumn

Dim ColumnText As String = ExportRow(ExportColumn.ColumnName).ToString()

CsvBuilder.Append(ColumnText)

CsvBuilder.Append(TextDelimiter)

下一页

CsvBuilder.AppendLi ne()

下一页

End Sub

Private Sub CreateHeader(ByVal InputTable As DataTable,ByVal CsvBuilder As StringBuilder)
$ b每个ExportColumn的$ b作为InputTable.Columns中的DataColumn

Dim ColumnText As String = ExportColumn.ColumnName.ToString()

CsvBuilder.Append(ExportColumn.ColumnName)

CsvBuilder.Append(TextDelimiter)

下一页

CsvBuilder.AppendLine()

结束子

结束类

I have the following codes; I can export data from database but i want to create multiple csv file per Row of data.

Private Function SetProperties(ByVal Name, ByVal Value) As Object
Dim objServiceManager As Object
Dim objStruct As Object
objServiceManager = CreateObject("com.sun.star.ServiceManager")
objStruct = objServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
objStruct.Name = Name
objStruct.Value = Value
SetProperties = objStruct
End Function
Public Sub ExportCSV()
Dim counter As Integer = 1
While counter <= frmExtract.DataGridView1.RowCount
Dim strFilename As String = "test" & counter & ".csv"
Dim Csv As New Exporter()
Using CsvWriter As New StreamWriter("C:\Documents and Settings\frgits9\Desktop\harold_files\test_folder\" & strFilename)
CsvWriter.Write(Csv.CsvFromDatatable(GetSampleData()))
End Using
counter += 1
cn.Close()
End While
End Sub
--------------------
Public Function GetSampleData() As DataTable
conn()
Dim da As New SqlDataAdapter("spOutBoundProoflist", cn)
Dim ProoflistData As New DataSet()
da.Fill(ProoflistData, "Prooflist")
Return ProoflistData.Tables(0)
cn.Close()
End Function
---------------
Public Function GetSampleData2() As DataTable
conn()
Dim da As New SqlDataAdapter("spgetheader", cn)
Dim Prooflistheader As New DataSet()
da.Fill(Prooflistheader,"Prooflistheader")
Return Prooflistheader.Tables(0)
cn.Close()
End Function
------------------------
Public Class Exporter
Public Sub New()
TextDelimiter = "|"c
HasColumnHeaders = True
End Sub
Public Property TextDelimiter() As Char
Get
Return _TextDelimiter
End Get
Set(ByVal value As Char)
_TextDelimiter = value
End Set
End Property
Public Property HasColumnHeaders() As Boolean
Get
Return _HasColumnHeaders
End Get
Set(ByVal value As Boolean)
_HasColumnHeaders = value
End Set
End Property
Public Function CsvFromDatatable(ByVal InputTable As DataTable) As String
Dim CsvBuilder As New StringBuilder()
If HasColumnHeaders Then
CreateHeader(InputTable, CsvBuilder)
End If
CreateRows(InputTable, CsvBuilder)
Return CsvBuilder.ToString()
End Function
Private Sub CreateRows(ByVal InputTable As DataTable, ByVal CsvBuilder As StringBuilder)
For Each ExportRow As DataRow In InputTable.Rows
For Each ExportColumn As DataColumn In InputTable.Columns
Dim ColumnText As String = ExportRow(ExportColumn.ColumnName).ToString()
CsvBuilder.Append(ColumnText)
CsvBuilder.Append(TextDelimiter)
Next
CsvBuilder.AppendLine()
Next
End Sub
Private Sub CreateHeader(ByVal InputTable As DataTable, ByVal CsvBuilder As StringBuilder)
For Each ExportColumn As DataColumn In InputTable.Columns
Dim ColumnText As String = ExportColumn.ColumnName.ToString()
CsvBuilder.Append(ExportColumn.ColumnName)
CsvBuilder.Append(TextDelimiter)
Next
CsvBuilder.AppendLine()
End Sub
End Class

推荐答案

这是代码 -

Here is the code -
foreach (DataTable table in Ds.Tables)
{
    foreach (DataRow row in table.Rows)
    {
        ID_Queue=ID_Queue+1;
        CSVData=String.Concat("Field1,Field2,Field3,Field4,Field5",Environment.NewLine);
        CSVData=String.Concat(CSVData, row[0].ToString(),",", row[1].ToString(),",", row[2].ToString(),",", row[3].ToString(),",", row[4].ToString());
        System.IO.StreamWriter file = new System.IO.StreamWriter(String.Concat("CSV",ID_Queue.ToString(),".csv"));
        file.WriteLine(CSVData);
        file.Close();
    }
}


这篇关于带有来自其他数据集的标头的多个csv的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆