View Full Version : سوال: تبدیل access به txt و Excel و Word
ashkan1234
شنبه 22 مهر 1391, 11:59 صبح
چطور میشه دیتا بیس رو (یا همون فایل access ) رو تبدیل کرد به فرمتهای Word ,Excel,Txt
بطوری که کاربر خودش مسیر خروجی فایلها رو انتخاب کنه؟
خروجی ها منظم باشند!
دوستان خیلی گشتم تو سایتهای مختلف(حتی سایتهای لاتین)ولی متاسفانه راهی برای اینکار نبود!
اگر از دوستان در این ضمینه اطلاعاتی دارند،مرحمتی بفرمایید!
SlowCode
شنبه 22 مهر 1391, 12:56 عصر
از کامپوننت ComponetOne VSFlexGird استفاده کردی؟ تو اون تاپیک گفته بودی که بهم ریخته نشون میده، اگه ممکنه یه عکس از خروجیت بزار تا ببینم.
البته واسه فرمت txt میتونی دستی هم درست کنی ولی ارزششو نداره.
ashkan1234
شنبه 22 مهر 1391, 13:16 عصر
از کامپوننت ComponetOne VSFlexGird استفاده کردی؟ تو اون تاپیک گفته بودی که بهم ریخته نشون میده، اگه ممکنه یه عکس از خروجیت بزار تا ببینم.
البته واسه فرمت txt میتونی دستی هم درست کنی ولی ارزششو نداره.
دیگه از VSFlex استفاده نمیکنم!
از این کامپوننت استفاده میکنم:
(ComponetOne True DBGrid Pro 8 (OLEDB
اصلا به اون صورت نمیشه براش کد نویسی کرد که خروجی ازش بگیرم!
به غیر از این راه!راهی هم هست همشو مستقیم از MDB کانورت کرد؟!
SlowCode
شنبه 22 مهر 1391, 16:38 عصر
به اینصورت میتونی خروجی بگیری:
TDBGrid1.ExportToDelimitedFile "C:\Log.txt", , " | "
پارامتر آخر به عنوان جداکننده است و میتونی به جاش از " " استفاده کنی.
از این کد هم میتونی استفاده کنی:
TDBGrid1.ExportToFile "C:\Log.html", False
خروجی این کد html هست ولی میتونی xls بنویسی تا به فرمت اکسل دربیاد البته البته حالت استاندارد نیست به همین دلیل وقتی بازش میکنی یه سوال ازت میکنه که باید Yes رو بزنی.
ashkan1234
شنبه 22 مهر 1391, 18:24 عصر
به اینصورت میتونی خروجی بگیری:
TDBGrid1.ExportToDelimitedFile "C:\Log.txt", , " | "
پارامتر آخر به عنوان جداکننده است و میتونی به جاش از " " استفاده کنی.
از این کد هم میتونی استفاده کنی:
TDBGrid1.ExportToFile "C:\Log.html", False
خروجی این کد html هست ولی میتونی xls بنویسی تا به فرمت اکسل دربیاد البته البته حالت استاندارد نیست به همین دلیل وقتی بازش میکنی یه سوال ازت میکنه که باید Yes رو بزنی.
دست شما درد نکنه داداش!
فقط یه چندتایی مشکل هستش!
واسه همشون میخوام کاربر مکان ذخیره اش رو خودش انتخاب کنه!نمیخوام به صورت پیش فرض یکجا ذخیره کنه!
----------------------------------------------------
در فرمت txt:
1-فایل تکستی که میسازه هدرها رو نداره!ولی تو فایل اکسل هدرها هستند!
2-بعضی از فیلدهای اعداد رو فارسی برمیگردونه بعضی ها رو انگلیسی(همونشن عدد هستن)این باعث میشه نظمش به هم بریزه!
-------------------------------------------------
در فرمت اکسل:
خیلی عالیه!کاملا منظم و مرتب برام میچینه!بدون هیچ مشکلی!همه چیز نظم داره و هدرها هم هستند!
فقط راهی نیست اون پیام رو اولش نده؟(حالا زیادم مهم نیست،چون اصل کار رو درست انجام میده)
-----------------------------------------------
در فرمت doc (یا همون ورد خودمون)همه چیز داغونه!
همه اطلاعات از چپ به راست تغییر پیدا کردن!
یعنی اگه تو دیتا گریدم اولین خونه "سال" هستش،اینجا شده آخرین خونه!
ضمن اینکه نوشته هاش نامنظم اند!
-----------------------------------------------
فقط خیلی برام مهمه که یجوری بشه که کاربر محل ذخیره سازی را انتخاب کند!
مثل استفاده از کنترل commandialog هنگام back up گرفتن!(نمیشه از همین کنترل استفاده کرد؟)
SlowCode
شنبه 22 مهر 1391, 20:30 عصر
1-فایل تکستی که میسازه هدرها رو نداره!ولی تو فایل اکسل هدرها هستند!
منظورت اینه که بالای هر ستون اسم فیلدش نوشته بشه؟ اینو میشه به طور دستی وارد کرد.
2-بعضی از فیلدهای اعداد رو فارسی برمیگردونه بعضی ها رو انگلیسی(همونشن عدد هستن)این باعث میشه نظمش به هم بریزه!
حتما کنار اعداد انگلیسی حروف انگلیسی هست که اونطوری میشه.
برو به مسیر زیر:
Control panel --> Region & language --> additional settings --> use native digits = Nutional
فقط راهی نیست اون پیام رو اولش نده؟
با اون کد نه! چون ما در واقع فایل html رو با اکسل باز میکنیم واگه دکمه save as رو بزنی خودش فرمت html رو نشون میده.
فقط خیلی برام مهمه که یجوری بشه که کاربر محل ذخیره سازی را انتخاب کند!
یه commandialog بزار روی فرم بعد کد زیر رو بنویس:
cd.Filter = "*.txt|*.txt"
cd.showsave
if cd.filename <> "" then
TDBGrid1.ExportToDelimitedFile cd.filename, , " | "
End if
ashkan1234
شنبه 22 مهر 1391, 21:34 عصر
بله دقیقا میخوام بالای هر ستون اسم فیلدش نوشته بشه!
چطور ممکنه؟
در فرمت تکست هنوز اولین ستون(محتویاتش یک عدد 4رقمی است)را میاره آخر!مابقی جاهاشون درسته!
درستش کردم اینو!رو فایل txt کلیک راست کردم،right to left رو زدم!(ولی نمیشه بطور پیش فرض اینکارو کرد؟)
-------------------------------
راه دیگه ای واسه خروجی word و excel هستش؟(حالا باز اکسل خوبه،ولی Word خیلی داغونه)!
چه راهی هست؟
--------------------------------
واسه commondialog هم دستت درد نکنه!عالی بود!
SlowCode
شنبه 22 مهر 1391, 21:56 عصر
اگه از vsflexgrid استفاده کنی هر دوتا مشکلت حل میشه، یعنی هم اضافه کردن فیلد و هم خروجی اکسل.
این کد اسم فیلد ها رو توی یه فایل متنی ذخیره میکنه. اگه از vsflexgrid و پارامتر append رو true کنی به پایین متن نوشته شده اضافه میشه و همه چی درست میشه.
For i = 0 To Adodc1.Recordset.Fields.Count - 1
a = a & Adodc1.Recordset.Fields(i).Name & " "
Next
Open "C:\Log.txt" For Output As #1
Print #1, a
واسه ورد چیزی نمیدونم ولی right to left رو میتونی با sendkeys انجام بدی.
ashkan1234
شنبه 22 مهر 1391, 22:13 عصر
اگه از vsflexgrid استفاده کنی هر دوتا مشکلت حل میشه، یعنی هم اضافه کردن فیلد و هم خروجی اکسل.
این کد اسم فیلد ها رو توی یه فایل متنی ذخیره میکنه. اگه از vsflexgrid و پارامتر append رو true کنی به پایین متن نوشته شده اضافه میشه و همه چی درست میشه.
For i = 0 To Adodc1.Recordset.Fields.Count - 1
a = a & Adodc1.Recordset.Fields(i).Name & " "
Next
Open "C:\Log.txt" For Output As #1
Print #1, a
واسه ورد چیزی نمیدونم ولی right to left رو میتونی با sendkeys انجام بدی.
منظورت این کامپوننته:
(Componetone vsflexgrid8(oledb/unicode
داداش من اصلا با vsflexgrid کار نکردم!نمیدونم چطوری میشه فیلدها دیتابیس رو بهش پیوست کرد!(ارتباط با تیبل دیتا بیس رو میگم!)
این کامپوننتی که ازش استفاده میکنم،همه چیزش دمه دسته!کار باهاش خیلی راحته!
-----------------------------
واسه sendKeys هم اگه برات مقدور بود کدش رو برام قرار بده!
SlowCode
یک شنبه 23 مهر 1391, 22:15 عصر
بله منظورم همونه، کافیه DataSource کنترل رو کلیک کنی و Adodc1 رو انتخاب کنی. البته قبلش باید commandType کنترل ADODC رو روی adcmdTable تنظیم کنی.
واسه sendKeys هم اگه برات مقدور بود کدش رو برام قرار بده!
ببخشید، برای RTL کردن فایل متنی راهی نمیدونم، اونی که گفتم واسه کنترلی مثل RichTextBox بود که به کار شما نمیاد.
ashkan1234
دوشنبه 24 مهر 1391, 15:24 عصر
بله منظورم همونه، کافیه DataSource کنترل رو کلیک کنی و Adodc1 رو انتخاب کنی. البته قبلش باید commandType کنترل ADODC رو روی adcmdTable تنظیم کنی.
ببخشید، برای RTL کردن فایل متنی راهی نمیدونم، اونی که گفتم واسه کنترلی مثل RichTextBox بود که به کار شما نمیاد.
ردیفش کردم !ولی تو این هم مشکل راست چین کردن هستش!البته در اکسل هم الان چپ چین شده!
چطوری میشه اینارو راست چین کرد؟
چطوری مییشه خروجی ورد گرفت؟
چطوری میشه ستونهای فلیکس گرید رو ارتفاعشونو بزرگ کرد؟ارتفاعشون!
ashkan1234
چهارشنبه 03 آبان 1391, 15:11 عصر
دوستان هنوز مشکل بنده پا برجاست!
حالا اون قبلیا زیاد مهم نیست!
ولی چطور میشه برای خروجی txt ،هدرها رو هم گذاشت(منظورم هدرهای vsflex )
و اینکه خروجی منظم و مرتب باشه؟!
و اینکه آیا ارتفاع ستونهای فلیکس گرید رو میشه زیاد کرد؟
همینقدر مشکلم حل بشه کافیه!
SlowCode
چهارشنبه 03 آبان 1391, 16:01 عصر
چطوری مییشه خروجی ورد گرفت؟
بله میشه، صبر کن برات پیدا میکنم.
ولی چطور میشه برای خروجی txt ،هدرها رو هم گذاشت(منظورم هدرهای vsflex )
صبر کن کد اینو هم برات میفرستم فقط یکم صبر کن.
و اینکه آیا ارتفاع ستونهای فلیکس گرید رو میشه زیاد کرد؟
بله میشه، با متد RowHeightMin میتونی تنظیمش کنی
SlowCode
چهارشنبه 03 آبان 1391, 17:40 عصر
ولی چطور میشه برای خروجی txt ،هدرها رو هم گذاشت(منظورم هدرهای vsflex )
fg.SaveGrid "book1.txt", flexFileTabText, flexXLSaveFixedCells
و برای اکسل که قبلا می خواستی:
fg.SaveGrid "book1.xls", flexFileExcel, flexXLSaveFixedCells
برای اطلاعات بیشتر این صفحه (http://helpcentral.componentone.com/docs/vsflexgrid8/savegridmethod.htm) رو بخون.
واسه ورد هم این صفحه (http://mediavb.persiangig.com/DataBase/Lesson/Lesson%2012.htm) رو بخون.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.