[英]Writing datagridview data to excel sheet not working vb
我正在嘗試使用 vb 將我的 datagridview 導出到 Excel 表。 我可以保存excel文件並命名它,但我打開excel文件,它是空白的,只有工作表名稱。 這是我的代碼:
Private Sub exportDGVToExcel_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim app As _Application = New Application()
Dim wb As _Workbook = app.Workbooks.Add(Type.Missing)
Dim ws1 As _Worksheet
ws1 = wb.Sheets("Sheet1")
ws1 = wb.ActiveSheet
ws1.Name = "First Sheet"
For i As Integer = 0 To DataGridView1.Columns.Count - 1
ws1.Cells(i, 1) = DataGridView1.Columns(i - 1).HeaderText
Next i
For i As Integer = 0 To DataGridView1.Rows.Count - 1
For j As Integer = 0 To DataGridView1.Columns.Count - 1
ws1.Cells(i + 1, j) = DataGridView1.Rows(i).Cells(j).Value.ToString()
Next j
Next i
Dim file As New SaveFileDialog()
file.FileName = "test"
file.DefaultExt = ".xlsx"
If file.ShowDialog() = DialogResult.OK Then
wb.SaveAs(file.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)
End If
app.Quit()
End Sub
提前致謝!
嘗試這個。 應該很容易翻譯成VB。 如果您需要幫助,請告訴我。
internal static void ToCSV_File(ref DataGridView dgv, string filename = "")
{
StringBuilder sb = new StringBuilder();
string quote = "\"";
//Headers
int i = 0;
foreach (DataGridViewColumn col in dgv.Columns)
{
if (i > 0)
{
sb.Append(",");
}
sb.Append(quote + col.HeaderText + quote);
i++;
}
sb.AppendLine();
int r = 0;
int c = 0;
foreach (DataGridViewRow dr in dgv.Rows)
{
foreach (DataGridViewColumn col in dgv.Columns)
{
if (c > 0)
{
sb.Append(",");
}
sb.Append(quote + dr.Cells[col.Index].Value + quote);
c++;
}
c = 0;
sb.AppendLine();
r++;
}
if (String.IsNullOrEmpty(filename))
{
filename = Path.GetRandomFileName() + ".csv";
string folder = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache);
filename = folder + @"\" + filename;
}
File.WriteAllText(filename, sb.ToString());
System.Diagnostics.Process.Start(filename);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.