Лучший отвечающий
Проблема с открытием файла excel

Вопрос
-
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 файла в чем проблема?
7 июня 2017 г. 7:32
Ответы
-
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;
}
}
}Пока ждал сам написал
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 3 июля 2017 г. 10:21
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 г. 9:13 -
нужно чтоб шаблон загрузился в него7 июня 2017 г. 20:05
-
var excelApp = new Excel.Application();
excelApp.Visible = true;
excelApp.Workbooks.Open(path, Type.Missing);Так пробовали?
Метод Open перегрузки имеет
8 июня 2017 г. 6:13 -
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;
}
}
}
}
}А то что то он мне все поля записывает, даже которые скрыты и не должны быть выводиться.
8 июня 2017 г. 7:52 -
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;
}
}
}Пока ждал сам написал
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 3 июля 2017 г. 10:21
8 июня 2017 г. 10:26