PDA

View Full Version : سوال: خواندن و نوشتن در Excel 2007



Armin060
دوشنبه 13 اردیبهشت 1389, 12:48 عصر
سلام.
من می خوام از تو فایل های excel 2007 بخونم و یا توشون بنویسم. جست و جو هم کردم و دارم می کنم. ولی واقعا فوری احتیاج دارم. ممنون میشم راه نمایی کنید. فقط در همین حد که مثلا بفهمم تو سلول A2 چی نوشته یا مثلا نوشته ی سلول AA313 رو تغییر بدم. همین.

Qermezkon
دوشنبه 13 اردیبهشت 1389, 12:54 عصر
از aspose استفاده كن
ميل بزن برات بفرستمش

ostovarit
دوشنبه 13 اردیبهشت 1389, 12:54 عصر
سلام.
من می خوام از تو فایل های excel 2007 بخونم و یا توشون بنویسم. جست و جو هم کردم و دارم می کنم. ولی واقعا فوری احتیاج دارم. ممنون میشم راه نمایی کنید. فقط در همین حد که مثلا بفهمم تو سلول A2 چی نوشته یا مثلا نوشته ی سلول AA313 رو تغییر بدم. همین.

من در این مورد زیاد جستجو کردم این لینک روش خروجی گرفتن از اطلاعات رو به چند فرمت مختلف از جمله اکسل 2003 و 2007 میده که خودم نوشتم:
http://barnamenevis.org/forum/showthread.php?t=217255&highlight=Excel

بر عکسش رو هم دیدم که فایل اکسل انتخاب میشه و تو یک گرید نمایش داده میشه با جستجو میتونی مثال های زیادی پیدا کنی ...

به نظر من اطلاعات رو از اکسل تو گرید نمایش بده همونجا کاربر ویرایش کنه بعد دوباره یک خروجی از گرید بگیر این روش سریع و راحت هست

Armin060
دوشنبه 13 اردیبهشت 1389, 13:13 عصر
نه من فقط میخوام که اطلاعات رو بخونم و بنویسم. مثلا تو یه Textbox. کاری با datagird ندارم.
کسی نمی دونه چطوری باید این کار رو بکنم؟
aspose هم که واسه excel چیزی نداره!

cardano7
دوشنبه 13 اردیبهشت 1389, 13:55 عصر
سلام داداش گل من،
متغیرهایی که باید تعریف کنی:

Microsoft.Office.Interop.Excel.Application objExcel=null;
Microsoft.Office.Interop.Excel.Workbook workbook = null;

باز کردن فایل:
چون ما اکسل رو فارسی می کنیم برخی مثال ها روی اون کار نمیده. شما این رو امتحان کن:


public void open(string FileName,string Password, bool ReadOnly)
{
object mis = System.Reflection.Missing.Value;
objExcel = new Microsoft.Office.Interop.Excel.Application();
objExcel.Visible = false;
System.Globalization.CultureInfo oldCI;
oldCI = System.Threading.Thread.CurrentThread.CurrentCultu re;
System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-US");
objExcel.Workbooks.Add("");
workbook = objExcel.Workbooks.Open(FileName, mis, ReadOnly, mis, Password, Password, mis, mis, mis, mis, mis, mis, mis, mis, mis);
Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.g et_Item(1);

}

بستن:

public void close()
{
objExcel.Workbooks.Close();
}

این دو تابع هم حتما نیازت میشه که بتونی تعداد سطر و ستون رو تشخیص بدی(یادمه چقدر پدرم رو در آورد تا اون قدیما پیداش کردم!) :

public int Rows(int worksheet)
{
Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
Microsoft.Office.Interop.Excel.Worksheet mysheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.g et_Item(worksheet);
return mysheet.UsedRange.Rows.Count;
}

public int Columns(int worksheet)
{
Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
Microsoft.Office.Interop.Excel.Worksheet mysheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.g et_Item(worksheet);
return mysheet.UsedRange.Columns.Count;
}

ذخیره و خروج هم یادت نره:

public void save()
{
workbook.Save();
}

public void quit()
{
objExcel.Quit();
}
public void close()
{
objExcel.Workbooks.Close();
}


برای خواندن و نوشتن داده هم:


public string this [int Worksheet,int Row, int Column]
{
get
{
if (!file_open)
{
throw new System.Exception("Excel file is not open, But data is requested from");
return "";
}
else
{
Microsoft.Office.Interop.Excel.Sheets sheets=workbook.Sheets;
Microsoft.Office.Interop.Excel.Worksheet mysheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.g et_Item(Worksheet);
Microsoft.Office.Interop.Excel.Range cell = ((Microsoft.Office.Interop.Excel.Range)mysheet.Cel ls[Row, Column]);
if (cell.Value2 != null)
return cell.Value2.ToString();
else
return null;
}
}
set
{
if(!file_open)
throw new System.Exception("Excel file is not open, But data changing is requested");
else
{
Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
Microsoft.Office.Interop.Excel.Worksheet mysheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.g et_Item(Worksheet);
mysheet.Cells[Row, Column] = value;
}
}
}

خلاصه توی کدها دست بردم. امیدوارم خطایی به وجود نیومده باشه.

موفق باشید،
آرش

ostovarit
دوشنبه 13 اردیبهشت 1389, 14:04 عصر
سلام داداش گل من،
موفق باشید،
آرش


سلام مرسی از جواب کامل
به این تاپیک هم نگاهی بکن در این مورد هم اگر تجربه ای داری ممنون میشم بگی:
http://barnamenevis.org/forum/showthread.php?t=218499

LORD AELX
دوشنبه 13 اردیبهشت 1389, 14:06 عصر
جوینده هم هم جوینده های قدیم!!! :لبخندساده: :متفکر:


(http://www.google.com/#hl=en&source=hp&q=Read+from+EXCEL+C%23&aq=f&aqi=g10&aql=&oq=&gs_rfai=&fp=84c7fb41710deb10)GOOGLE => READ FROM EXCEL C# !!! (http://www.google.com/#hl=en&source=hp&q=Read+from+EXCEL+C%23&aq=f&aqi=g10&aql=&oq=&gs_rfai=&fp=84c7fb41710deb10)
GOOGLE => WRITE TO EXCEL C# !!! (http://www.google.com/#hl=en&q=Write+to+EXCEL+C%23&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=84c7fb41710deb10)
MSDN => READING EXCEL FROM C# !!! (http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/b6e8a28c-6760-4e86-a1aa-e2ce9ec36380)
MSDN => WRITING TO EXCEL USING C# !!! (http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ef11a193-54f3-407b-9374-9f5770fd9fd7)

http://www.codeproject.com/KB/cs/Excel_and_C_.aspx
http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=534
http://blog.brezovsky.net/en-text-38.html
http://www.gemboxsoftware.com/GBSpreadsheet.htm
http://stackoverflow.com/questions/15828/reading-excel-files-from-c

cardano7
دوشنبه 13 اردیبهشت 1389, 14:35 عصر
سلام مرسی از جواب کامل
به این تاپیک هم نگاهی بکن در این مورد هم اگر تجربه ای داری ممنون میشم بگی:
http://barnamenevis.org/forum/showthread.php?t=218499

ممنون از نظر لطفت. راستش من این قدرها هم بلد نیستم اون کار رو قبلا کرده بودم که تونستم جواب بدم. امروز تازه عضو این سایت شدم فقط برای اینکه جواب این سوال رو پیدا کنم:
http://barnamenevis.org/forum/showthread.php?t=218622

خودم عضو CodeProject هستم. اونجا جای خیلی تر و تمیزی نیست. باورم نمیشد فروم های ایرانی از برخی جنبه ها بهتر باشند. اونجا مردم از هر کشوری می رسند نظر میدند. با انگلیسی که نه جای فعل و نه جای فاعلش مشخصه! اکثر سوال ها هم در مورد اینکه که چطور GoogleMap رو به C# وصل کنند یا Twitter و یا camera یا هزار تا سوال چرند. ولی خوب آدم با سواد هم زیاد داره.

من خودم یک BOT نویس هستم. اگه فروم خوب یا افراد خبره در این در مورد این جور کارها میشناسید بهم معرفی کنید.


ممنون

ostovarit
دوشنبه 13 اردیبهشت 1389, 14:43 عصر
خودم عضو CodeProject هستم. اونجا جای خیلی تر و تمیزی نیست. باورم نمیشد فروم های ایرانی از برخی جنبه ها بهتر باشند. اونجا مردم از هر کشوری می رسند نظر میدند. با انگلیسی که نه جای فعل و نه جای فاعلش مشخصه! اکثر سوال ها هم در مورد اینکه که چطور GoogleMap رو به C#‎ وصل کنند یا Twitter و یا camera یا هزار تا سوال چرند. ولی خوب آدم با سواد هم زیاد داره.

من خودم یک BOT نویس هستم. اگه فروم خوب یا افراد خبره در این در مورد این جور کارها میشناسید بهم معرفی کنید.


ممنون

من همین الان مشکلم حل شد ... یک کم خلاقیت خرج دادم و...
در مورد فروم ها موارد زیر به من زیاد کمک کرد:
http://barnamenevis.org
http://www.dotnetsource.com
http://forum.majidonline.com
http://www.developercenter.ir
http://www.codeproject.com

اینم IDYahoo منه تبادل نظر خواستی Add کن:
ostovarit