Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将datagridview导出为csv DataTable myTable=新的DataTable(“组件”); 数据列mydatcolumn; mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“组件”; myTable.Columns.Add(mydatcolumn); mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“服务类别”; myTable.Columns.Add(mydatcolumn); mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“组件所有者”; myTable.Columns.Add(mydatcolumn); for(int i=0;i_C#_Datagridview - Fatal编程技术网

C# 将datagridview导出为csv DataTable myTable=新的DataTable(“组件”); 数据列mydatcolumn; mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“组件”; myTable.Columns.Add(mydatcolumn); mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“服务类别”; myTable.Columns.Add(mydatcolumn); mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“组件所有者”; myTable.Columns.Add(mydatcolumn); for(int i=0;i

C# 将datagridview导出为csv DataTable myTable=新的DataTable(“组件”); 数据列mydatcolumn; mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“组件”; myTable.Columns.Add(mydatcolumn); mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“服务类别”; myTable.Columns.Add(mydatcolumn); mydatcolumn=新数据列(); mydatcolumn.DataType=System.Type.GetType(“System.String”); mydatcolumn.ColumnName=“组件所有者”; myTable.Columns.Add(mydatcolumn); for(int i=0;i,c#,datagridview,C#,Datagridview,如上所述,我正在创建一个包含三列的DataTable,并使用此DataTable在datagridview上显示2列表(上面未显示)中的项。列表仅为2列填充行,第三列用于用户输入。在那个按钮点击事件中,我只想在一个文件中写入那个些用户正在输入的行,而忽略其余的行。我怎样才能做到这一点。 非常感谢使用componentRGOdataGridView.Rows获取componentRGOdataGridView中的所有数据。 然后使用DataGridViewRow类的属性获取单元格的值。 在此之后,

如上所述,我正在创建一个包含三列的DataTable,并使用此DataTable在datagridview上显示2列表(上面未显示)中的项。列表仅为2列填充行,第三列用于用户输入。在那个按钮点击事件中,我只想在一个文件中写入那个些用户正在输入的行,而忽略其余的行。我怎样才能做到这一点。
非常感谢

使用componentRGOdataGridView.Rows获取componentRGOdataGridView中的所有数据。
然后使用DataGridViewRow类的属性获取单元格的值。
在此之后,您可以使用您喜爱的csv编写器制作csv文件

您可以尝试使用此代码将单元格的值打印到输出窗口

    DataTable myTable = new DataTable("components");
    DataColumn mydatcolumn;

    mydatcolumn = new DataColumn();
    mydatcolumn.DataType = System.Type.GetType("System.String");
    mydatcolumn.ColumnName = "Component";

    myTable.Columns.Add(mydatcolumn);

    mydatcolumn = new DataColumn();
    mydatcolumn.DataType = System.Type.GetType("System.String");
    mydatcolumn.ColumnName = "Service Category";

    myTable.Columns.Add(mydatcolumn);

    mydatcolumn = new DataColumn();
    mydatcolumn.DataType = System.Type.GetType("System.String");
    mydatcolumn.ColumnName = "Component Owner";

    myTable.Columns.Add(mydatcolumn);


    for (int i = 0; i < serviceList.Count; i++)
    {
        DataRow mydatarow;
        //DataRow mydatarow2;
        mydatarow = myTable.NewRow();
        mydatarow["component"] = ComponentList[i];
        //mydatarow2 = myTable.NewRow();
        mydatarow["Service Category"] = sc[i];
        myTable.Rows.Add(mydatarow);
    }
    componentRGOdataGridView.DataSource = myTable;    

private void addCoButton_Click(object sender, EventArgs e)
{

}

DataGridView控件提供了
DataGridView.GetClipboardContent()
方法,该方法将选定单元格格式化为可放入Windows剪贴板的
DataObject
。然后,您可以以
TextDataFormat.CommaSeparatedValue
的形式检索剪贴板的内容。这将以CSV格式的字符串形式返回剪贴板的内容,该字符串可以写入文件。通过使用DataGridView提供的方法
SelectAll()
,您可以选择整个DataGridView复制到剪贴板中。您甚至可以通过将
DataGridView.ClipboardCopyMode
指定为等于enum
DataGridViewClipboardCopyMode.enableAllwaysIncludeHeaderText
来复制标题行

见证以下代码的简单性:

    foreach (DataGridViewRow item in componentRGOdataGridView.Rows)
    {
        Debug.Write(item.Cells[0].Value.ToString());
        Debug.Write(item.Cells[1].Value.ToString());
        Debug.WriteLine(item.Cells[2].Value.ToString());
    }
请注意,在复制DataGridView之前,我还采取了保存剪贴板内容的预防措施,以便在复制完成后恢复它

我相信这种方法是优越的,因为您使用的是已经提供给您的框架,而不是通过行和单元格循环来重新发明轮子,这很容易出错


希望这能解决你的问题…

那么你的问题到底是什么?从
OnClick
事件获取当前行?是否将事件附加到按钮?或者从给定的
数据行
创建CSV文件?获取datagridview的行并将其保存在.CSV文件中是一个问题。
void SaveDataGridViewToCSV(string filename)
{
    // Save the current state of the clipboard so we can restore it after we are done
    IDataObject objectSave = Clipboard.GetDataObject();

    // Choose whether to write header. Use EnableWithoutHeaderText instead to omit header.
    dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
    // Select all the cells
    dataGridView1.SelectAll();
    // Copy (set clipboard)
    Clipboard.SetDataObject(dataGridView1.GetClipboardContent());
    // Paste (get the clipboard and serialize it to a file)
    File.WriteAllText(filename,Clipboard.GetText(TextDataFormat.CommaSeparatedValue));

    // Restore the current state of the clipboard so the effect is seamless
    if(objectSave != null) // If we try to set the Clipboard to an object that is null, it will throw...
    {
        Clipboard.SetDataObject(objectSave);
    }
}