PDA

View Full Version : مبتدی: خطا در ارتباط با فایل اکسل



alimahdifar
سه شنبه 22 خرداد 1397, 22:45 عصر
سلام.برنامه ایبرای ارتباط با اکسل نوشتم هنگام اجرا خطا رخ می دهد. عکس خطا ضمیمه شده است.
این هم کد های من

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.Data.SqlClient;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComO bject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
private void button1_Click(object sender, EventArgs e)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;






xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(Application.StartupPath + "\\Book1.xlsx", 0, true, 5, "", "", true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindow s, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1) ;


range = xlWorkSheet.UsedRange;


for (int columnCounter = 1; columnCounter <= range.Columns.Count; columnCounter++)
{
this.dataGridView1.Columns.Add(xlWorkSheet.Cells[1, columnCounter].Value2, xlWorkSheet.Cells[1, columnCounter].Value2);
}
//get the value of each excel cell and put into this variable
string str;
//Loop counters
int rowCounter = 0;
int columnCounter2 = 0;


for (rowCounter = 2; rowCounter <= range.Rows.Count; rowCounter++)
{
//Create a new row into the datagridview
this.dataGridView1.Rows.Add();
for (columnCounter2 = 1; columnCounter2 <= range.Columns.Count; columnCounter2++)
{
str = Convert.ToString((range.Cells[rowCounter, columnCounter2] as Excel.Range).Value2);
//add the value of excel file into the new row
this.dataGridView1.Rows[rowCounter - 2].Cells[columnCounter2 - 1].Value = str;
}
}
xlWorkBook.Close(true, null, null);
xlApp.Quit();


releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
}


private void button2_Click(object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.DataSet DtSet;


System.Data.OleDb.OleDbDataAdapter MyCommand;


MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source='d:\Book1.xlsx';Extended Properties=Excel 8.0;");


MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);


MyCommand.TableMappings.Add("Table", "Net-informations.com");


DtSet = new System.Data.DataSet();


MyCommand.Fill(DtSet);


dataGridView1.DataSource = DtSet.Tables[0];


MyConnection.Close();
}
}
}

parvizwpf
چهارشنبه 23 خرداد 1397, 13:32 عصر
کلا این روش Microsoft.Office.Interop.Excel
واز لایبرری EPPlus استفاده کنید

رامین مرادی
چهارشنبه 23 خرداد 1397, 14:44 عصر
منم spire رو پیشنهاد میدم. نسخه محدودش هست میتونید استفاده کنید. من وردشو استفاده میکنم و جوابگو بوده تا حالا انقضا هم نداره فقط یه سری محدودیت که مثلا تا 25 پاراگراف رو ساپورت میکنه که کار من هم اونقدر نیست.
اینم لینک سایتش
https://www.e-iceblue.com/

alimahdifar
پنج شنبه 24 خرداد 1397, 00:05 صبح
کلا این روش Microsoft.Office.Interop.Excel
واز لایبرری EPPlus استفاده کنید

سلام.متوجه منظورتون نشدم.