Member 12899205 Ответов: 1

Экспорт datagridview и label vaue в excel


У меня есть datagridview, который содержит детали счета. А также этикетка, на которой указана общая сумма. Я хочу, чтобы добавить значения элемента управления datagridview в Excel и общая с ярлык в конце значения элемента управления datagridview в Excel.

здесь я использую функцию для экспорта datagridview в excel. и вызов его в событии щелчка.

private void ToCsV(DataGridView dGV, строковое имя файла)
{
строки stOutput = "";
// Экспорт заголовков:
струнные шейдеры = "";

для (int j = 0; j < dGV.Столбцы.Count; j++)
шейдеры = шейдеры.ToString () + Convert.Метод toString(dGV.Столбцы[Дж].HeaderText) + " \t";
stOutput += sHeaders + " \r\n";
// Экспортировать данные.
for (int i = 0; i < dGV.RowCount - 1; i++)
{
строка stLine = "";
for (int j = 0; j < dGV. Rows[i].Ячейки.Count; j++)
stLine = stLine.ToString () + Convert.Метод toString(dGV.Строки[я].Ячейки[j]. значение) + " \t";
stOutput += stLine + " \r\n";
}
Кодирование формате UTF16 = кодировка.GetEncoding(1254);
Byte [] output = utf16.Метод getbytes(stOutput);
FileStream fs = новый FileStream(filename, FileMode.Создавать);
BinaryWriter bw = новый BinaryWriter(fs);
БВ.Писать(выход 0, выход.Длина); / / запись закодированного файла
чёрно-белый.Промывать();
БВ.Рядом();
ПС.Рядом();
}
Теперь я хочу добавить значение метки, которое является общим для конца данных excel. Я видел примеры добавления значений меток. Но моя проблема в том, что я хочу добавить его в конце данных в excel. Поэтому его можно назвать тотальным. Как я могу это сделать? Я застрял с этим. Кто-нибудь может мне помочь?

Что я уже пробовал:

Я экспортировал значение datagridview в excel.

1 Ответов

Рейтинг:
0

Richard Deeming

Вы сгенерировали файл значений, разделенных табуляцией (TSV), поэтому у вас очень мало контроля над форматированием. Чтобы добавить итог в файл, вам просто нужно вывести еще одну строку, содержащую итог.

Однако в настоящее время ваш код использует конкатенацию строк в цикле. Это будет ужасно неэффективно - каждый раз, когда вы добавляете новую строку, .NET должен создать новую строку, скопировать старую строку в начало, а затем скопировать строку, которую вы добавляете, в конец.

Вы могли бы использовать класс StringBuilder[^] чтобы построить строку. Но в этом случае, поскольку вы записываете выходные данные в файл, вероятно, было бы лучше использовать StreamWriter[^].

using (var fs = new FileStream(filename, FileMode.Create))
using (var writer = new StreamWriter(fs, Encoding.GetEncoding(1254)))
{
    // Write the headers:
    for (int j = 0; j < dGV.Columns.Count; j++)
    {
        if (j != 0) writer.Write('\t');
        writer.Write(dGV.Columns[j].HeaderText);
    }
    writer.WriteLine();
    
    // Export the data:
    for (int i = 0; i < dGV.RowCount - 1; i++)
    {
        var row = dGV.Rows[i];
        
        for (int j = 0; j < dGV.Columns.Count; j++)
        {
            if (j != 0) writer.Write('\t');
            writer.Write(row.Cells[j].Value);
        }
        
        writer.WriteLine();
    }
    
    // Add the total:
    writer.Write("Total:");
    writer.Write('\t');
    writer.Write(YourLabel.Text);
    writer.WriteLine();
}

Если вы хотите больше контролировать форматирование и компоновку результата, то вам нужно будет использовать инструмент, который может генерировать реальный файл Excel. Например: