یه برنامه نوشتم که اطلاعات رو از اکسل می خونه میریزه تو گرید ویو حالا می خوام هر رکورد این گرید تو یه صفحه پرینت بشه یا مثلا بهش بگیم از سطر 200 تا 300 رو پرینت کن این 100 صفحه پرینت کنه چطوری میشه گرید رو پرینت کرد ؟
Printable View
یه برنامه نوشتم که اطلاعات رو از اکسل می خونه میریزه تو گرید ویو حالا می خوام هر رکورد این گرید تو یه صفحه پرینت بشه یا مثلا بهش بگیم از سطر 200 تا 300 رو پرینت کن این 100 صفحه پرینت کنه چطوری میشه گرید رو پرینت کرد ؟
سلام
بین دوست من تابعی که نوشتم واست میاد توی مسیر 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;
راستش وقت ندارم وگرنه باقی کدهاش واست میفرستادم
ممنون ولی این که بخونرو نوشتم می خوام پرینت کنه
از ds
dap.Fill(ds, sheet);
که فیلتر کردید مینونید در کریستال ریپورت یا خود ابزار گزارش گیری ویژوال استودیو استفاده کنید و چاپ کنید