экспорт данных в csv - PullRequest
       2

экспорт данных в csv

0 голосов
/ 19 сентября 2010
    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)
{

}

Как упоминалось выше, я создаю DataTable с тремя столбцами и отображаю элементы в 2 List <> (не показано выше) в сетке данных, используя этот dataTable. Список заполнить строки только для 2 столбцов, а третий столбец для ввода пользователя. В этом событии нажатия кнопки я хочу записать только те строки в файл, в которые пользователь вводит данные, и игнорировать остальные строки. Как я могу этого добиться. Большое спасибо

Ответы [ 2 ]

0 голосов
/ 08 октября 2014

Элемент управления DataGridView предоставляет метод DataGridView.GetClipboardContent(), который форматирует выбранные ячейки как DataObject, которые можно поместить в буфер обмена Windows.Затем вы можете извлечь содержимое буфера обмена как TextDataFormat.CommaSeparatedValue.Это возвращает содержимое буфера обмена в виде строки в формате CSV, которую можно записать в файл.Используя методы DataGridView SelectAll(), вы можете выбрать весь DataGridView для копирования в буфер обмена.Вы также можете даже скопировать строку заголовка, указав DataGridView.ClipboardCopyMode, чтобы быть равным перечислению DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText.

Обратите внимание на простоту следующего кода:

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);
    }
}

Обратите внимание, что я также взялпредосторожность сохранения содержимого буфера обмена до того, как я скопировал DataGridView, чтобы я мог восстановить его после того, как я это сделал.

Я считаю, что этот метод лучше, потому что вы используете уже предоставленную для вас платформу, ине заново изобретать колесо, просматривая строки и ячейки, которые подвержены ошибкам.

Надеюсь, это решит ваши проблемы ...

0 голосов
/ 24 апреля 2012

Используйте componentRGOdataGridView.Rows, чтобы получить все строки в componentRGOdataGridView.Затем используйте свойство Cells из класса DataGridViewRow, чтобы получить значение ячейки.После этого вы можете использовать ваш любимый csv Writer для создания CSV-файла.

Вы можете попробовать этот код, чтобы распечатать значение ячейки в окне вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...