【发布时间】:2016-10-22 21:02:43
【问题描述】:
大家好,下午好。我在 VB.Net 中有一个程序,可以将 Datagridview 中的数据导出到这样的 Excel 文件中
导出后,我将编辑 Excel 文件并将其返回到我的 Datagridview 但很遗憾这是我的输出
正如您在两张图片上看到的那样,它们是不同的。没有逗号,没有小数位和0 列Total 也被添加,但假设不是。
我的问题是如何在 excel 中实现相同的格式?将逗号和小数点放在数字列中,并且不要将具有0 或0.00 的行包含在Total 列中
我想要的只是我的 Datagridview 数据也与 Excel 中的格式相同。
这是我在 Import 中的代码
Dim conn As OleDbConnection
Dim dta As OleDbDataAdapter
Dim dts As DataSet
Dim excel As String
Dim OpenFileDialog As New OpenFileDialog
OpenFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
OpenFileDialog.Filter = "All Files (*.*)|*.*|Excel files (*.xlsx)|*.xlsx|CSV Files (*.csv)|*.csv|XLS Files (*.xls)|*xls"
If (OpenFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
Dim fi As New FileInfo(OpenFileDialog.FileName)
Dim FileName As String = OpenFileDialog.FileName
excel = fi.FullName
conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
dta = New OleDbDataAdapter("Select * From [Sheet1$]", conn)
dts = New DataSet
dta.Fill(dts, "[Sheet1$]")
DataGridView1.DataSource = dts
DataGridView1.DataMember = "[Sheet1$]"
conn.Close()
With DataGridView1
.RowHeadersVisible = False
.Columns(0).HeaderCell.Value = "Item Code"
.Columns(1).HeaderCell.Value = "Description"
.Columns(2).HeaderCell.Value = "Delivery Date"
.Columns(3).HeaderCell.Value = "Stock On-Hand"
.Columns(4).HeaderCell.Value = "Ordering Level"
.Columns(5).HeaderCell.Value = "Order Qty"
.Columns(6).HeaderCell.Value = "Approved Qty"
.Columns(7).HeaderCell.Value = "UOM"
.Columns(8).HeaderCell.Value = "Unit Price"
.Columns(9).HeaderCell.Value = "Total"
.Columns(10).HeaderCell.Value = "Remarks"
End With
DataGridView1.Columns.Item(0).Width = 70
DataGridView1.Columns.Item(1).Width = 180
DataGridView1.Columns.Item(2).Width = 70
DataGridView1.Columns.Item(3).Width = 70
DataGridView1.Columns.Item(4).Width = 70
DataGridView1.Columns.Item(5).Width = 70
DataGridView1.Columns.Item(6).Width = 70
DataGridView1.Columns.Item(7).Width = 61
DataGridView1.Columns.Item(8).Width = 76
DataGridView1.Columns.Item(9).Width = 86
DataGridView1.Columns.Item(10).Width = 125
DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
For Each row As DataGridViewRow In DataGridView1.Rows
row.Cells("Total").Value = row.Cells("Order Qty").Value * row.Cells("Unit Price").Value
Next
Dim total As Double = 0
For i As Integer = 0 To DataGridView1.RowCount - 1
total += DataGridView1.Rows(i).Cells(9).Value
Next
TextBox7.Text = total
addnewnewandrefresh()
DELETEROW()
Else
Dim con1 As MySqlConnection = New MySqlConnection("server=localhost;userid=root;password=admin1950;database=inventory")
Dim sql1 As MySqlCommand = New MySqlCommand("select ItemCode,Description,DeliveryDate,StockOnHand,OrderingLevel,OrderQty,ApprovedQty,UoM,UnitPrice,Total,Remarks from final_purch where PRNumber = '" & TextBox1.Text & "';", con1)
Dim ds1 As DataSet = New DataSet
Dim adapter1 As MySqlDataAdapter = New MySqlDataAdapter
con1.Open()
adapter1.SelectCommand = sql1
adapter1.Fill(ds1, "MyTable")
DataGridView1.DataSource = ds1.Tables(0)
con1.Close()
With DataGridView1
.RowHeadersVisible = False
.Columns(0).HeaderCell.Value = "Item Code"
.Columns(1).HeaderCell.Value = "Description"
.Columns(2).HeaderCell.Value = "Delivery Date"
.Columns(3).HeaderCell.Value = "Stock On-Hand"
.Columns(4).HeaderCell.Value = "Ordering Level"
.Columns(5).HeaderCell.Value = "Order Qty"
.Columns(6).HeaderCell.Value = "Approved Qty"
.Columns(7).HeaderCell.Value = "UOM"
.Columns(8).HeaderCell.Value = "Unit Price"
.Columns(9).HeaderCell.Value = "Total"
.Columns(10).HeaderCell.Value = "Remarks"
End With
DataGridView1.Columns.Item(0).Width = 70
DataGridView1.Columns.Item(1).Width = 180
DataGridView1.Columns.Item(2).Width = 70
DataGridView1.Columns.Item(3).Width = 70
DataGridView1.Columns.Item(4).Width = 70
DataGridView1.Columns.Item(5).Width = 70
DataGridView1.Columns.Item(6).Width = 70
DataGridView1.Columns.Item(7).Width = 61
DataGridView1.Columns.Item(8).Width = 76
DataGridView1.Columns.Item(9).Width = 86
DataGridView1.Columns.Item(10).Width = 125
DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
With Me.DataGridView1
.RowsDefaultCellStyle.BackColor = Color.WhiteSmoke
.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender
End With
MsgBox("Importing Data has been Cancelled")
End If
TYSM 未来的帮助
【问题讨论】:
-
我认为它是非法的,但在导入所有行后删除带有 0 或 0.00 的行
-
你能给我一些代码给那个先生吗?特别是在细胞形成方面,谢谢你以后的帮助,我回家后会再读一遍这篇文章。 TY
标签: vb.net excel datagridview