עבור לתוכן

אנטי וירוס חושד בתוכנה כוירוס

Featured Replies

פורסם

יש הרבה ספריות מסחריות בתשלום, בחינם השתמשתי ב-NPOI  אבל זה היה בפרוייקט די ישן ולא הייתי צריך דברים מסובכים

https://www.nuget.org/packages/NPOI/

  • תגובות 77
  • צפיות 9.1k
  • נוצר
  • תגובה אחרונה
פורסם
ציטוט של eido300

נכון, אבל כיון שאין installer ואני לא מעוניין שהתוכנה תצטרך הרשאות אדמין כל פעם אז עשיתי את זה ידנית...  השאלה שלי היא איך עושים שהתוכנה "תטען את הקובץ" כמו שמסמך וורד לא סתם פותח את הוורד אלא מעלה את המסמך כולו, ככה שהתוכנה שלי תעשה.

מערכת ההפעלה מעבירה את הpath של הקובץ (או כמה קבצים) לתוכנה שלך כארגומנט, אז הדרך הפשוטה ביותר היא לפרסר את System.Environment.GetCommandLineArgs. לדוג' אם אתה מפעיל את התוכנה על הקובץ file.txt בספרייה מסמכים, זה שווה ערך ל:

myprogram.exe "C:\Users\User\Documents\file.txt"

(בהנחה שסוג הקובץ txt משוייך ל myprogram.exe. שים לב שאפשר גם לשייך אותו למשהו כמו "myprogram.exe myarg", וכך להשיג אפקט של named command line arguments, לדוג' לשייך ל"myprogram.exe --files").

 

ציטוט של eido300

רפלקשן גם כן יצטרך הרשאות מן הסתם, יש דרך לעשות בלי שיצטרך הרשאות מיוחדות?

רפלקשן לא צריך הרשאות, אלא אם כן אתה בסביבה כמו web.

ציטוט של eido300

איך עושים את זה עם רפלקשן?

טעות שלי, לא צריך רפלקשן. שגיאה לא תיזרק עד שתעבוד עם הdll. אז אתה פשוט צריך לבדוק אם Excel מותקן לפני כן. הכי פשוט זה לנסות לטעון אותו ולבדוק אם הוא עובד:

if (System.Reflection.Type.GetTypeFromProgID("Excel.Application") != null)
{
  var doc = new Microsoft.Office.Interop.Excel.Application();
  // ...
}
else
{
  MessageBox.Show("Microsoft Excel is not installed.");
}

 

ציטוט של etal

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

לא צריך אפילו לייצא, יש ספריות שמסוגלות לעבוד עם קובצי excel ישירות.

ציטוט של eido300

אילו ספריות יש?

מאוד תלוי מה אתה צריך.

 

קובצי excel החל מ2007 (נדמה לי) הם בסה"כ קובצי zip שמכילים XML ועוד משאבים (תמונות וכו'). מתוקננים בתקן של מיקרוסופט שנקרא Open XML, ניתן לקרוא עליו כאן. מעשית עדיין יותר קל להשתמש בספרייה.

 

לפני כן, אלו קבצים בינאריים ומניסיון, אין הרבה ספריות שעובדות איתן. יש מעט לא מושלמות.

 

אם אתה לא צריך לתמוך בפורמט הישן (XLS) אלא רק החדש (XLSX), יש מספר ספריות טובות לכל שפה. שים לב שרוב מוחלט של הספריות לא תומכות בתכונות מתקדמות כגון תרשימי ציר. זה לא אמור למנוע עבודה עם קבצים שמכילים כאלו, אבל כן מונע מניפולציה שלהם אם משום מה אתה צריך כזו.

 

נוסף על NPIO שהוזכרה כאן, יש את EPPlus (אם כי הרישיון עשוי להיות בעייתי), את SpreadSheetLight (רישיון MIT) ואת ExcelLibrary (רישיון LGPL).

נערך על-ידי af db creid

פורסם
ציטוט של eido300

אשמח לקבל הערות והארות על הקוד.

מה הכוונה?

פורסם
  • מחבר
ציטוט של af db creid

מערכת ההפעלה מעבירה את הpath של הקובץ (או כמה קבצים) לתוכנה שלך כארגומנט, אז הדרך הפשוטה ביותר היא לפרסר את System.Environment.GetCommandLineArgs. לדוג' אם אתה מפעיל את התוכנה על הקובץ file.txt בספרייה מסמכים, זה שווה ערך ל:

חשבתי שזה כך, אז ניסיתי לקבל ארגומנט בדרך המסורתית של main שמקבל ארגומנטים 

main(string path)
{
}

אבל הקומפלייר התעקש שאי אפשר להגדיר ככה נקודת כניסה, אלא אם כן בהגדרות אני קובע שבאפון אוטומטי ישלח string כארגומנט, אנסה מחר את מה שהצעת.

 

ציטוט של af db creid

טעות שלי, לא צריך רפלקשן. שגיאה לא תיזרק עד שתעבוד עם הdll. אז אתה פשוט צריך לבדוק אם Excel מותקן לפני כן. הכי פשוט זה לנסות לטעון אותו ולבדוק אם הוא עובד:


if (System.Reflection.Type.GetTypeFromProgID("Excel.Application") != null)
{
  var doc = new Microsoft.Office.Interop.Excel.Application();
  // ...
}
else
{
  MessageBox.Show("Microsoft Excel is not installed.");
}

אני לא צריך להעביר את הכתובת המלאה? כי הdll יכול להיות בכמה מקומות.

בכל מקרה גם את זה אנסה מחר בע"ה.

 

ציטוט של af db creid
ציטוט של eido300

אשמח לקבל הערות והארות על הקוד.

מה הכוונה?

הכוונה שלמדתי לכתוב קוד מספר c# 3 ומאנשים טובים שהסכימו לעזור (כמוכם) לפני בערך עשר שנים, בשנים האחרונות לא ממש יצא לי לכתוב קוד, אני רוצה לדעת שאני עושה את זה נכון.

פורסם
ציטוט של eido300

חשבתי שזה כך, אז ניסיתי לקבל ארגומנט בדרך המסורתית של main שמקבל ארגומנטים 



main(string path)
{
}

אבל הקומפלייר התעקש שאי אפשר להגדיר ככה נקודת כניסה, אלא אם כן בהגדרות אני קובע שבאפון אוטומטי ישלח string כארגומנט, אנסה מחר את מה שהצעת.

void Main(string[] args)
{
}

שים לב שזה מערך. והMain מתחיל באות גדולה.

ציטוט של eido300

אני לא צריך להעביר את הכתובת המלאה? כי הdll יכול להיות בכמה מקומות.

 

זה לא מחפש DLL אלא יישום COM.

 

ציטוט של eido300

הכוונה שלמדתי לכתוב קוד מספר c# 3 ומאנשים טובים שהסכימו לעזור (כמוכם) לפני בערך עשר שנים, בשנים האחרונות לא ממש יצא לי לכתוב קוד, אני רוצה לדעת שאני עושה את זה נכון.

הרבה השתנה מאז C# 3... :P

בהזדמנות אעבור על הקוד.

נערך על-ידי af db creid

פורסם
  • מחבר

כן, כך כתבתי והוא עדיין התעקש שזה שגיאה...

 

תודה רבה

פורסם

תוכל לכתוב את ההודעה של הקומפיילר? כי זה מסקרן אותי :)

פורסם
  • מחבר

האמת שמקודם ניסיתי לכתוב כך והוא לא הראה שגיאה, אבל לפני כן השגיאה היתה בסגנון של "אי אפשר לעשות כך נקודת כניסה לתוכנית"

פורסם
  • מחבר

אגב, מכירים את זה שממזערת נגני מדיה (כמו המדיה פליר) ואז כשעומדים על הסמל שלהם בשורת המשימות במקום שיופיע החלון שפתוח שם מופיע שם סרגל עם לחצנים כמו עצור, קדימה, אחורה וכו.

איך עושים את זה (שלא יופיע החלון הממוזער אלא סרגל אחר)?

פורסם

WinForms?

פורסם
ציטוט של eido300

האמת שמקודם ניסיתי לכתוב כך והוא לא הראה שגיאה, אבל לפני כן השגיאה היתה בסגנון של "אי אפשר לעשות כך נקודת כניסה לתוכנית"

אנגלית בבקשה?

פורסם
  • מחבר

ברור שwinforms, העניין הוא שאם ממזערים ועומדים עם העכבר על החלון הממוזער רואים תצוגה מוקטנת של החלון הנוכחי, אני רוצה שבמקום שזה יופיע, יופיע משהו אחר, אני כרגע לא מוצא דוגמא לזה, אבל אני בטוח שראיתי באחד מנגני המדיה שהציג לחצנים במקום את המסך הממוזער.

פורסם

הבנתי, השאלה אם זה winforms או wpf.

פורסם
  • מחבר
ציטוט של af db creid

אנגלית בבקשה?

timeWork.Program.Main(string)' has the wrong signature to be an entry point'

 

Program 'c\...timeWork.exe' dos not contain a static 'Main' method suitable for an entry point

 

אבל זה קורה רק אם מגדירים את main שתקבל רק סטרינג אחד ולא מערך.

פורסם
  • מחבר
ציטוט של af db creid

הבנתי, השאלה אם זה winforms או wpf.

אני משתמש בwinfom.

למען האמת, אני לא יודע איך משתמשים wpf... פעם אחת פתחתי פרוייקט כזה ראיתי שצריך להגדיר בxml אמרתי נחכה לפעם אחרת, עוד לא הגיעה...

ארכיון

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

דיונים חדשים