سلام
بین دوست من تابعی که نوشتم واست میاد توی مسیر Bin-Debug برنامه از فایل اکسل داد ها رو میخونه و میریزه توی گراید
شما دو راه دارید یا اینکه به فایل اکسلتون یک فیلد بنام id اضافه کنید و در دستور اسکیول مانند:
"SELECT * FROM [" + sheet + "] where id between 100 And 200"
تغییراتی بدید بدین صورت که بیاد بین دوبازه عددی مثلا 100 و 200 جستجو بزنه بعد داده های جستجو شده رو بریزه درون دیتاست بعد درون حلقه یکی یکی بفزسید به پرینت
یا بجای دستور اسکیول گراید ویو رو فیلتر کنید و هرچی که فیلتر شد باز محتویات گراید فیلتر شده رو بریزید درون حلقه و تک تک به پرینت ارسال کنید
البته میتونید ارسال به پرینتر رو بدون جلقه هم انجام بدید مثل ابزارهای گزارش گیری
private DataSet GetDataFromExcel()
{
string urlFile=AppDomain.CurrentDomain.BaseDirectory + "Book2.xlsx";
var ds = new DataSet();
string oleDbConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + urlFile + ";Extended Properties= Excel 12.0";
try
{
using (var cnn = new OleDbConnection(oleDbConnection))
{
var dt = new DataTable();
cnn.Open();
dt = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0 ; i < dt.Rows.Count; i++)
{
string sheet = dt.Rows[i]["table_name"].ToString();
var dap = new OleDbDataAdapter("SELECT * FROM [" + sheet + "]", cnn);
dap.Fill(ds, sheet);
}
}
cnn.Close();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return ds;
}
این هم نحوه صدا زدنش تابع برای نمایش اطلاعات اکسل
var dt = new System.Data.DataTable();
dt = GetDataFromExcel().Tables[0];
dataGridView1.DataSource = dt;
راستش وقت ندارم وگرنه باقی کدهاش واست میفرستادم