המרת טבלה באקסל למערך בC# - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

המרת טבלה באקסל למערך בC#


asaf172

Recommended Posts

שלום

אני רוצה להמיר טבלה בקובץ אקסל למערך (דו מימדי) בC#

נניח וקיים קובץ אקסל במחשב, בשם book1, וב sheet1 כל התאים בטווח A1 עד C3 מלאים במספרים שלמים.

איך אני אומר לC# ללכת לתאים A1:C3 שבsheet1 שבקובץ book1 ולהמיר את התאים האלה למערך int דו מימדי?

ואיך אני עושה הכל רק הפוך?

כלומר יש לי מערך int דו מימדי בc#, ואת המערך הזה אני מעתיק לתאים מסויימים בsheet1 שבbook1..

תודה רבה :xyxthumbs:

אסף

קישור לתוכן
שתף באתרים אחרים

מה בדיוק הדרישות של מה שאתה עושה? כי הקובץ אקסל שאתה מתאר יכול להיות מתואר בצורה מאד פשוטה בקובץ CSV, איתו יהיה לך הרבה יותר קל לעבוד.

מכיוון שאקסל יודע לייבא ולייצא CSV, אולי יש אפשרות לעבוד מול זה ולחסוך כאב ראש.

קישור לתוכן
שתף באתרים אחרים

זריז אתה :yelclap:

בלינק הראשון שנתת אומרים להוסיף ממשק בשם excel 12.0 object library

אצלי מופיע רק excel 14.0 object library

האם זה טוב?

תודה

אסף

לדעתי ההבדל זניח,

אם תתקל בבעיות עם המדריך תרשום כאן וננסה לעזור.

קישור לתוכן
שתף באתרים אחרים

מה בדיוק הדרישות של מה שאתה עושה? כי הקובץ אקסל שאתה מתאר יכול להיות מתואר בצורה מאד פשוטה בקובץ CSV, איתו יהיה לך הרבה יותר קל לעבוד.

מכיוון שאקסל יודע לייבא ולייצא CSV, אולי יש אפשרות לעבוד מול זה ולחסוך כאב ראש.

האמת שאני מתעסק עם CSV.

אני מנסה לנתח באמצעות C# מניות מהבורסה.

כל הנתונים על המניות נמצאים בקבצי CSV, ובנתונים האלה אני צריך להשתמש, רק שאני לא יודע איך "לגשת" אליהם.

DARKENERGY הוספתי את הממשק, והעתקתי את קטע הקוד כפי שרשום באתר,

וישנן הרבה שגיאות.

הנה תמונת מסך

(מקווה שתצליחו לראות משהו)

האמת שלא הבנתי כלום מהקוד שהעתקתי (אולי כי הידע שלי מסתכם רק ב5 יחידות מחשבים?)

אני לא מבין איפה אני נכנס לתמונה ואומר למחשב לאיזה קובץ לגשת, ואיזו טבלה להמיר למערך...? :kopfpatsch:

any help?

תודה :)

אסף

קישור לתוכן
שתף באתרים אחרים

בכלליות interop עם הוא בעייתי, תדרש ללכת רחוק בשביל אשכרה בסוף לצליח לסגור את הprocess בצורה נורמלית מבלי להרוג אותו.

החוקים הכללים לעבודה עם comobjects:

רק נקודה אחת,מה הכוונה-

אם יש לך ביטוי כזה

app.worksheet.cells

קודם קח את app.worksheet ותציב אותו במשתנה ואז תפנה לcells.

תדאג שבסוף העניין אתה מנתק את כל אותם משתנים (להציב Null ידנית!)

ועושה להם marshal בסוף.

ואל תשכח לקרוא לapp.close()/dispose.

בכלליות- אם אתה יכול תעבוד עם CSVים, זה יחסוך לך הרבה כאב ראש.

קישור לתוכן
שתף באתרים אחרים

בכלליות- אם אתה יכול תעבוד עם CSVים, זה יחסוך לך הרבה כאב ראש.

אני עובד עם CSV, וכבר קיבלתי מיגרנה :)

באמת שחשבתי שזה יהיה קצת יותר פשוט

חרשתי על , האמת שיש על זה מידע, הבעיה היא שאני לא מבין אותו.

אתם מכירים אולי מדריך כלשהו (גם באנגלית טוב) שמסביר מהבסיס (לאחד שיש לו רק את הבסיס :-\ ) איך עושים את זה?

קישור לתוכן
שתף באתרים אחרים

יש לך קובץ CSV ביד שלפי התאור שלך אמור להראות משהו כזה:


1,2,3
4,5,6
7,8,9

אתה צריך לקרוא את הקובץ הזה, שורה שורה וכל שורה להכניס למערך ולסגור עניין. משהו בכיוון הזה:


const int ROWS = 3;


string[][] numbers = new string[ROWS][];


using (StreamReader sr = new StreamReader(@"c:\book1.csv"))
{
for (int row = 0; row < ROWS; row++)
{
numbers[row] = sr.ReadLine().Split(',');
}
}

אם אתה לא יודע מראש מה מספר השורות אז תרוץ עד EndOfFile במקום לפי מספר ואם אתה צריך את זה במטריצה של int אז תמיר את זה על ידי int.Parse איפה שצריך.

זה עוזר לך? זה הכיוון לפחות?

קישור לתוכן
שתף באתרים אחרים

למה לעבוד עם מערך כשאפשר לעבוד עם רשימה (List)? ככה לא צריך את הקבוע ROWS (בעצם, אפילו לא צריך StreamReader - אפשר פשוט להשתמש ב-File.ReadLines).

עם Linq אפשר אפילו לכתוב הכל בשורה אחת:

var numbers = 
from row in File.ReadLines(@"c:\book1.csv")
select row.Split(',');

או אם אתה לא אוהב את התחביר הLinqי:

var numbers = File.ReadLines(@"c:\book1.csv").Select(row => row.Split(','));

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...