PDA

View Full Version : سوال: پرینت کردن اطلاعات



mehrshadms
جمعه 16 خرداد 1393, 12:45 عصر
یه برنامه نوشتم که اطلاعات رو از اکسل می خونه میریزه تو گرید ویو حالا می خوام هر رکورد این گرید تو یه صفحه پرینت بشه یا مثلا بهش بگیم از سطر 200 تا 300 رو پرینت کن این 100 صفحه پرینت کنه چطوری میشه گرید رو پرینت کرد ؟

ali_md110
جمعه 16 خرداد 1393, 13:20 عصر
سلام
بین دوست من تابعی که نوشتم واست میاد توی مسیر 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;
راستش وقت ندارم وگرنه باقی کدهاش واست میفرستادم

mehrshadms
جمعه 16 خرداد 1393, 16:49 عصر
ممنون ولی این که بخونرو نوشتم می خوام پرینت کنه

ali_md110
جمعه 16 خرداد 1393, 21:07 عصر
از ds

dap.Fill(ds, sheet);
که فیلتر کردید مینونید در کریستال ریپورت یا خود ابزار گزارش گیری ویژوال استودیو استفاده کنید و چاپ کنید