我想将所有数据从DataGridView导出到CSV文件,但是日期格式错误。 我想要的日期格式为“ dd-MMM-yy”
完整代码:
Imports System.Data.OracleClient
Imports System.IO
Imports System.Text
Public Class Form1
Private da As OracleDataAdapter
Private cb As OracleCommandBuilder
Private ds As DataSet
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim oradb As String = "Data Source=testdb;User Id=teszt;Password=teszt;"
Dim conn As New OracleConnection(oradb)
conn.Open()
Dim cmd As New OracleCommand
Dim sql As String = "select * from dont"
cmd = New OracleCommand(sql, conn)
cmd.CommandType = CommandType.Text
da = New OracleDataAdapter(cmd)
cb = New OracleCommandBuilder(da)
ds = New DataSet()
da.Fill(ds)
DataGridView1.DataSource = ds.Tables(0)
Dim xRowCount As Integer = 0
Do Until xRowCount = DataGridView1.RowCount
DataGridView1.Rows(xRowCount).Cells(2).Style.Format = Format("dd-MMM-yy")
DataGridView1.Rows(xRowCount).Cells(1).Style.Format = Format("dd-MMM-yy")
xRowCount = xRowCount + 1
Loop
conn.Dispose()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim StrExport As String = ""
For Each C As DataGridViewColumn In DataGridView1.Columns
StrExport &= """" & C.HeaderText & ""","
Next
StrExport = StrExport.Substring(0, StrExport.Length - 1)
StrExport &= Environment.NewLine
For Each R As DataGridViewRow In DataGridView1.Rows
For Each C As DataGridViewCell In R.Cells
If Not C.Value Is Nothing Then
StrExport &= """" & C.Value.ToString & ""","
Else
StrExport &= """" & "" & ""","
End If
Next
StrExport = StrExport.Substring(0, StrExport.Length - 1)
StrExport &= Environment.NewLine
Next
Dim tw As IO.TextWriter = New IO.StreamWriter("C:\Users\rg\teszt.csv")
tw.Write(StrExport)
tw.Close()
End Sub
End Class
我正在使用Oracle SQL数据库
我尝试过:
Dim StrExport As String = ""
For Each C As DataGridViewColumn In DataGridView1.Columns
StrExport &= """" & C.HeaderText & ""","
Next
StrExport = StrExport.Substring(0, StrExport.Length - 1)
StrExport &= Environment.NewLine
For Each R As DataGridViewRow In DataGridView1.Rows
For Each C As DataGridViewCell In R.Cells
If Not C.Value Is Nothing Then
StrExport &= """" & C.Value.ToString & ""","
Else
StrExport &= """" & "" & ""","
End If
Next
StrExport = StrExport.Substring(0, StrExport.Length - 1)
StrExport &= Environment.NewLine
Next
Dim tw As IO.TextWriter = New IO.StreamWriter("C:\Users\rg\teszt.csv")
tw.Write(StrExport)
tw.Close()
当前看起来像这样,这不好:
“ 264117”,“ 2019.01.14。0:00:00”,“ 2019.06.01。0:00:00”,“ sikereseredmény”,“továbbrajogosult” “ 264547”,“ 2019.01.15。0:00:00”,“ 2019.06.02。0:00:00”,“ sikereseredmény”,“továbbranem jogosult”
我希望它在csv文件中看起来像这样:
“ 264117”,“-14年1月19日”,“-6月19日-01”,“ sikereseredmény”,“továbbrajogosult”
“ 264547”,“-15年1月19日”,“-02年6月19日”,“ sikereseredmény”,“továbbranem jogosult”
答案 0 :(得分:0)
对于每个作为日期的C.ValueType,都应使用tostring(“ yy-MMM.-dd”)。
答案 1 :(得分:0)
https://github.com/plataformatec/devise类用于读取结构化文本文件。
它允许指定字段分隔符和记录格式的其他变体。例如,我们可以使用TextFieldParser属性指定字段值是否用引号引起来。
这只是一个解析器,我们不能使用它将其写入文件,而只能从其中读取。
但是,当然,我们可以在需要时使用它来验证CSV格式的文件。
这是一种通用方法,可将DataGridView内容的结构和值写入文件。
然后,使用 import React, { useState, useEffect } from "react";
const Menu = props => <div onClick={props.click}>Toggle Foo</div>;
const Test = props => {
useEffect(() => {
console.log("mounted");
return () => console.log("unmounted");
}, []);
return null;
};
const App = props => {
const [foo, setFoo] = useState(false);
// this is the root of the problem
// move this line outside of the function body
// and it mounts/unmounts correctly
const AppCore = props => <Test />;
return (
<>
<Menu click={() => setFoo(!foo)} />
<AppCore />
</>
);
};
export default App;
类来验证此方法生成的输出。
您可以将一些参数传递给 TextFieldParser
方法:
CSVSaveDGVData
:只是提醒您,如果需要,可以指定其他Encoding。 UTF8
(DateTime
)时要使用的特定格式。 Date
,如果十进制值需要使用特定的区域性格式进行格式化。如果未指定,则默认为 CultureInfo
。 关于InvariantCulture
/ null
处理的重要说明:当前的 DBNull
转换将Cell.Value
/ null
值处理为空字符串:字段的空格式实际上取决于什么是读回这些值的。如果需要其他功能,则需要对其进行调整。
通话示例:
DBNull
Dim culture = CultureInfo.CreateSpecificCulture("hu-HU")
If CSVSaveDGVData("test.csv", DataGridView1, "dd-MMM.-yy", culture) Then
'All good
End If