none
Проблема с открытием файла excel RRS feed

  • Вопрос

  • private void button1_Click(object sender, EventArgs e)
            {
                Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
                ExcelApp.Workbooks.Open(@"C:\arh_staj.xlt");
                ExcelApp.Visible = true;
                ExcelApp.Application.Workbooks.Add(Type.Missing);
                ExcelApp.Columns.ColumnWidth = 20;

    }

    Открывается сразу 2 файла в чем проблема?

Ответы

  •  private void button5_Click(object sender, EventArgs e)
            {

                if (dataGridView1.RowCount == 0)
                {
                    MessageBox.Show("Нет записей для вывода на печать", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
                    string directory = AppDomain.CurrentDomain.BaseDirectory;
                    ExcelApp.Workbooks.Open(directory + "\\oborud.xlt");
                    ExcelApp.Visible = true;
                    int x = 0;
                    int a = 3;
                        for (int i = 3; i < dataGridView1.RowCount + 3; i++)
                        {
                        ExcelApp.Cells[i, 1] = (dataGridView1[1, x].FormattedValue);
                        ExcelApp.Cells[a,1].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 2] = (dataGridView1[2, x].FormattedValue);
                        ExcelApp.Cells[a, 2].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 3] = (dataGridView1[3, x].FormattedValue);
                        ExcelApp.Cells[a, 3].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 4] = (dataGridView1[4, x].FormattedValue);
                        ExcelApp.Cells[a, 4].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 5] = (dataGridView1[5, x].FormattedValue);
                        ExcelApp.Cells[a, 5].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 6] = (dataGridView1[6, x].FormattedValue);
                        ExcelApp.Cells[a, 6].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 7] = (dataGridView1[7, x].FormattedValue);
                        ExcelApp.Cells[a, 7].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 8] = (dataGridView1[8, x].FormattedValue);
                        ExcelApp.Cells[a, 8].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 9] = (dataGridView1[9, x].FormattedValue);
                        ExcelApp.Cells[a, 9].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 10] = (dataGridView1[10, x].FormattedValue);
                        ExcelApp.Cells[a, 10].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 11] = (dataGridView1[11, x].FormattedValue);
                        ExcelApp.Cells[a,11].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 12] = (dataGridView1[12, x].FormattedValue);
                        ExcelApp.Cells[a, 12].Borders.ColorIndex = 1;
                        x = x + 1;
                        a = a + 1;
                    }

                }
            }

    Пока ждал сам написал

                    
    8 июня 2017 г. 10:26

Все ответы

  •  Судя по всему вот эта строчка вашего кода и открывает еще один лишний документ

     ExcelApp.Application.Workbooks.Add(Type.Missing);

    Посмотрел описание вот здесь:

    https://msdn.microsoft.com/en-us/library/6fczc37s.aspx

    Если напишите просто

                var excelApp = new Excel.Application();
                Excel.Workbook workbook = excelApp.Workbooks.Add();
                excelApp.Visible = true;

    то откроется просто один пустой документ.

    Для чего вы добавляете/хотите указать этот вид шаблона? Переопределить текущий документ?

  • нужно чтоб шаблон загрузился в него
    7 июня 2017 г. 20:05
  •            var excelApp = new Excel.Application();
                excelApp.Visible = true;
                excelApp.Workbooks.Open(path, Type.Missing);

    Так пробовали?

    Метод Open перегрузки имеет

  • procedure TF_human.Button5Click(Sender: TObject);
    var
    i:integer;
    XL:variant;
    begin
    if DM.ADOT_human.RecordCount=0 then
    Application.MessageBox('Нет записей для печати','Нет записей',MB_OK+MB_ICONEXCLAMATION)
    else
     begin
       XL:=CreateOleObject('Excel.Application');    //вызов Excel
       XL.Visible:=true;              //включаем видимость
       XL.WorkBooks.ADD(GetCurrentDir+'\human.xlt');  //открываем шаблон

       DM.ADOT_human.First();
    For i:=3 to (DM.ADOT_human.RecordCount+2) do
     Begin
       XL.Application.Cells.Item[i,1]:=DM.ADOT_humanfam.Value;
       XL.Application.Cells.Item[i,2]:=DM.ADOT_humanimya.Value;
       XL.Application.Cells.Item[i,3]:=DM.ADOT_humanotch.Value;
       XL.Application.Cells.Item[i,4]:=DM.ADOT_humangod.Value;
       XL.Application.Cells.Item[i,5]:=DM.ADOT_humannomer.Value;
       XL.Application.Cells.Item[i,6]:=DM.ADOT_humandom_nomer.Value;
       XL.Application.Cells.Item[i,7]:=DM.ADOT_humanfed_ok.Value;
       XL.Application.Cells.Item[i,8]:=DM.ADOT_humanregion.Value;
       XL.Application.Cells.Item[i,9]:=DM.ADOT_humangorod.Value;
       XL.Application.Cells.Item[i,10]:=DM.ADOT_humanulica.Value;
       XL.Application.Cells.Item[i,11]:=DM.ADOT_humandom.Value;
       XL.Application.Cells.Item[i,12]:=DM.ADOT_humankvartira.Value;
       DM.ADOT_human.Next;
     End;
       XL.Application.Visible:=true;
     end;
    end;

    Это было в delphi как мне сделать цикл похожим на него,

                

     private void button5_Click(object sender, EventArgs e)
            {

                if (dataGridView1.RowCount == 0)
                {
                    MessageBox.Show("Нет записей для вывода на печать", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
                    string directory = AppDomain.CurrentDomain.BaseDirectory;
                    ExcelApp.Workbooks.Open(directory+"\\oborud.xlt");
                    ExcelApp.Visible = true;

                    for (int i = 0; i < dataGridView1.ColumnCount; i++) // клонко
                    {
                        for (int j = 0; j < dataGridView1.RowCount; j++)  // строка
                        {
                            if (dataGridView1[i, j].Value == null)
                            {
                                ExcelApp.Cells[j + 3, i + 1] = "";
                                ExcelApp.Cells[j + 3, i + 1].Borders.ColorIndex = 1;
                            }
                            else
                            {
                                ExcelApp.Cells[j + 3, i + 1] = (dataGridView1[i, j].Value).ToString();
                                ExcelApp.Cells[j + 3, i + 1].Borders.ColorIndex = 1;
                            }

                        }
                    }
                }
            }

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

  •  private void button5_Click(object sender, EventArgs e)
            {

                if (dataGridView1.RowCount == 0)
                {
                    MessageBox.Show("Нет записей для вывода на печать", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
                    string directory = AppDomain.CurrentDomain.BaseDirectory;
                    ExcelApp.Workbooks.Open(directory + "\\oborud.xlt");
                    ExcelApp.Visible = true;
                    int x = 0;
                    int a = 3;
                        for (int i = 3; i < dataGridView1.RowCount + 3; i++)
                        {
                        ExcelApp.Cells[i, 1] = (dataGridView1[1, x].FormattedValue);
                        ExcelApp.Cells[a,1].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 2] = (dataGridView1[2, x].FormattedValue);
                        ExcelApp.Cells[a, 2].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 3] = (dataGridView1[3, x].FormattedValue);
                        ExcelApp.Cells[a, 3].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 4] = (dataGridView1[4, x].FormattedValue);
                        ExcelApp.Cells[a, 4].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 5] = (dataGridView1[5, x].FormattedValue);
                        ExcelApp.Cells[a, 5].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 6] = (dataGridView1[6, x].FormattedValue);
                        ExcelApp.Cells[a, 6].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 7] = (dataGridView1[7, x].FormattedValue);
                        ExcelApp.Cells[a, 7].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 8] = (dataGridView1[8, x].FormattedValue);
                        ExcelApp.Cells[a, 8].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 9] = (dataGridView1[9, x].FormattedValue);
                        ExcelApp.Cells[a, 9].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 10] = (dataGridView1[10, x].FormattedValue);
                        ExcelApp.Cells[a, 10].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 11] = (dataGridView1[11, x].FormattedValue);
                        ExcelApp.Cells[a,11].Borders.ColorIndex = 1;
                        ExcelApp.Cells[i, 12] = (dataGridView1[12, x].FormattedValue);
                        ExcelApp.Cells[a, 12].Borders.ColorIndex = 1;
                        x = x + 1;
                        a = a + 1;
                    }

                }
            }

    Пока ждал сам написал

                    
    8 июня 2017 г. 10:26