Witam. Kod bez błędów, no kiedy zaczynam kompilować to wyskakuje błąd.
Jak rozwiązać ten problem?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
using ExcelObj = Microsoft.Office.Interop.Excel;
namespace sourceX
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenExcelTable(dataGridView1);
}
public static void OpenExcelTable(DataGridView TableInf)
{
OpenFileDialog odf = new OpenFileDialog();
odf.DefaultExt = "*xls,*.xlsx";
odf.Filter = "Excel Sheet (*.xlsx)|*.xlsx";
odf.Title = "Wybierz File";
ExcelObj.Application app = new ExcelObj.Application();
ExcelObj.Workbook workbook;
ExcelObj.Worksheet NwSheet;
ExcelObj.Range ShtRange;
DataTable dt = new DataTable();
if (odf.ShowDialog() == DialogResult.OK)
{
workbook = app.Workbooks.Open(odf.FileName, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value);
NwSheet = (ExcelObj.Worksheet)workbook.Sheets.get_Item(1);
ShtRange = NwSheet.UsedRange;
for(int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
{
dt.Columns.Add(new DataColumn((ShtRange.Cells[1, Cnum] as ExcelObj.Range).Value2.ToString()));
}
dt.AcceptChanges();
String[] columnNames = new String[dt.Columns.Count];
for(int i = 0; i < dt.Columns.Count; i++)
{
columnNames[0] = dt.Columns[i].ColumnName;
}
for(int Rnum = 2; Rnum <= ShtRange.Rows.Count; Rnum++)
{
DataRow dr = dt.NewRow();
for(int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
{
if ((ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value2 != null)
{
dr[Cnum - 1] = (ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value.ToString();
}
}
dt.Rows.Add(dr);
dt.AcceptChanges();
}
TableInf.DataSource= dt;
app.Quit();
}
app.Quit();
}
}
}