Проблемы с экспортом Excel из моего datagridview C #

Привет, у меня есть проблема, когда я хочу экспортировать свое сетевое представление в Excel в C #, где отлаженная строка не распознает меня, я получаю сообщение об ошибке, и это сообщение появляется.

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

 > public void ExportarExcel(DataGridView dgv)
    {
        try
        {
            SaveFileDialog archivo = new SaveFileDialog();
            archivo.Filter = "Excel (*.xls)|*.xls";
            archivo.FileName = "Reportes Escalafon" + DateTime.Now.Date.ToShortDateString().Replace('/', '-');
            if (archivo.ShowDialog() == DialogResult.OK)
            {
                Microsoft.Office.Interop.Excel.Application aplication = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook libroDeExcel = aplication.Workbooks.Add();
                Microsoft.Office.Interop.Excel.Worksheet hojaDeExcel = (Microsoft.Office.Interop.Excel.Worksheet)libroDeExcel.Worksheets.get_Item(1);

                hojaDeExcel.Cells[1, "A"] = dgv.Columns[0].HeaderText;
                hojaDeExcel.Cells[1, "B"] = dgv.Columns[1].HeaderText;
                hojaDeExcel.Cells[1, "C"] = dgv.Columns[2].HeaderText;
                hojaDeExcel.Cells[1, "D"] = dgv.Columns[3].HeaderText;

                hojaDeExcel.Columns[0].AutoFir();
                hojaDeExcel.Columns[1].AutoFir();
                hojaDeExcel.Columns[2].AutoFir();
                hojaDeExcel.Columns[3].AutoFir();
                hojaDeExcel.Name = "Reporte Actualizado";

                for (int i = 0; i < dgv.Rows.Count - 1; i++)
                {
                    for (int j = 0; j < dgv.Columns.Count; j++)
                    {
                        if (dgv.Rows[i].Cells[j].Value != null)
                        {
                            hojaDeExcel.Cells[i + 2, j + 1] = dgv.Rows[i].Cells[j].Value.ToString();
                        }
                    }
                }
                libroDeExcel.SaveAs(archivo.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
                libroDeExcel.Close(true);
                aplication.Quit();
                MessageBox.Show("Reporte Exportado a Excel", "MINEDU - ESCALAFON");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error al exportar la información debido a: " + ex.ToString());
        }
    }

introducir la descripción de la imagen aquí

Я извлекаю эти поля из хранимой процедуры моего сервера SQL, это простой запрос, чтобы показать

> CREATE PROC SP_MOSTRAR_PROVEEDOR
@TEXTOBUSCAR VARCHAR(50)
AS
BEGIN
SELECT  COD_PROV AS 'Código',
        SIA_PROV AS 'SIAF',
        NOM_PROV AS 'Proveedor',
        SIG_PROV AS 'SINAG',
        FEC_PROV AS 'FECHA',
        REC_PROV AS 'RECURSOS',
        CAN_PROV AS 'CANTIDAD',
        MON_PROV AS 'MONTO UNITARIO',
        MOT_PROV AS 'MONTO TOTAL',
        FEC_INI AS 'FECHA INICIO',
        FEC_FIN AS 'FECHA FIN',
        OBS_PROV AS 'OBSERVACIÓN',
        DATEDIFF(DAY,GETDATE(),DATEADD(day,15,FEC_PROV)) AS 'Expira',
        CASE
            WHEN DATEDIFF(DAY,GETDATE(), DATEADD(DAY,15,FEC_PROV))=1 THEN 'PLAZO VENCIDO'
            WHEN DATEDIFF(DAY,GETDATE(), DATEADD(DAY,15,FEC_PROV))>=2 AND  DATEDIFF(DAY,GETDATE(), DATEADD(DAY,15,FEC_PROV))<=6 THEN 'POR VENCER'
            WHEN DATEDIFF(DAY,GETDATE(), DATEADD(DAY,15,FEC_PROV))>=7 AND  DATEDIFF(DAY,GETDATE(), DATEADD(DAY,15,FEC_PROV))<=13 THEN 'EN PROCESO'
            WHEN DATEDIFF(DAY,GETDATE(), DATEADD(DAY,15,FEC_PROV))>=14 AND  DATEDIFF(DAY,GETDATE(), DATEADD(DAY,15,FEC_PROV))<16 THEN 'GENERADO'
        ELSE 'CONCLUIDO'
     END AS 'Movimiento'
 FROM TB_PROVEEDOR
 WHERE SID_PROV LIKE '%' + @TEXTOBUSCAR + '%' 
 ORDER BY COD_PROV ASC
 END
 GO

1
задан 27.11.2019, 16:34
1 ответ

Según я вижу método AutoFir он не существует, deber¦, - когда это AutoFit. AdemÃ: s, в Excel ¦-ndices они начинают с 1.

            hojaDeExcel.Columns[1].AutoFit();
            hojaDeExcel.Columns[2].AutoFit();
            hojaDeExcel.Columns[3].AutoFit();
            hojaDeExcel.Columns[4].AutoFit();
1
ответ дан 01.12.2019, 10:46
  • 1
    У меня выходит та же ошибка, не será n из-за колонн, где я распределяю ему имя, и их ему не удается найти? podrí когда этот заменяет 0 и 1 именами подмостков? – Hector Ramos 27.11.2019, 16:50
  • 2
    í ndice, в Excel, начни с 1, я исправляю ответ – Roger Torné 27.11.2019, 16:55
  • 3
    Мне удается экспортировать в excel но плохое, что они вышли у меня совсем неряшливыми но с правильными колоннами, как я могу делать, чтобы это помещать в шаблон predefinada, то есть откройте excel diseñ ado, и что проявился allí данные? – Hector Ramos 27.11.2019, 17:01
  • 4
    Порядок должен быть порядком datagrid, касательно шаблона, меня tendrí в excel с форматом, и ты это копируешь System.IO.File.Copy(ArchivoPlantilla, ArchivoFinal, true);, открываешь новый (ArchivoFinal) и aquí ты вводишь данные – Roger Torné 27.11.2019, 17:08