none
בעיה בפיתוח עם microsoft.Office.interop.Excel RRS feed

  • שאלה

  • כתבתי בזמנו מערכת שעובדת עם Interop.Excell בגירסה 1.5.0.0

    מה שהתוכנה (WEB) עושה זה לקחת DATATABLE לשמור אותה כאקסל ולשלוח אותה למשתמש.

    כאשר התקנתי אותה על שרת עם אופיס 2007 המערכת עבדה ללא בעיה אולם כאשר הייתי צריך להתקין אותה על שרת עם אופיס 2010 המערכת התחילה לעשות בעיות.

    קיבלתי את השגיאה הבאה:

    ל- Microsoft Excel אין אפשרות לפתוח או לשמור מסמכים נוספים משום שאין די זיכרון פנוי או שטח פנוי בדיסק.

    • כדי לפנות זיכרון, סגור חוברות עבודה או תוכניות שלהן אינך זקוק עוד.

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

    כמובן שיש מקום בזיכרון ויש מקום בדיסק.

    לאחר שבדקתי את השגיאה בגוגל הגעתי לדף הבא:

    http://support.microsoft.com/kb/830265/he

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

    ניסיתי לעדכן את התוכנה שלי ל microsoft.Office.interop.Excel גירסה 1.7.0.0 שמגיעה עם אופיס 2010. הקוד בגדול נשאר אותו דבר מלבד ApplicationClass שהתחלף ב Application כלומר הקוד נשאר ללא שינוי. אך זה לא עזר.

    אני לא בטוח שאני רוצה ללכת בדרך שמציעים בדף ורציתי לבדוק האם יש משהו שאני יכול לעשות כדי לפתור את הבעיה?

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

    אשמח לכל עזרה....

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

    אופן השמירה:

    sheet.SaveAs(FileName, empty, empty, empty, empty, empty, empty, empty, empty, empty);

     


    מנשה
    יום ראשון 06 מרץ 2011 18:03

תשובות

  • לצערי לא מצאתי פיתרון רלוונטי של כולל שימוש ב רגסטרי ולכן פתרתי את הבעיה ע"י שינוי הקוד

    זה הקוד שכתבתי כדי לשמור למשתמש קובץ אקסל/וורד

    GridView gv = new GridView();

     gv.DataSource = DoTable();

     gv.DataBind();

     Response.Clear();

    Response.Buffer = true;

     Response.ContentType = "application/vnd.ms-excel"; //כאן ניתן לכתוב WORD במקום EXCEL

    string guid = System.Guid.NewGuid().ToString();

     Response.AddHeader("content-disposition", @"attachment;filename=" + guid + ".xls");//במקרה של WORD צריך לשנות את הסיומת

     Response.Charset = "";

     this.EnableViewState = false;

    System.IO.StringWriter sw = new System.IO.StringWriter();

     System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

     gv.RenderControl(htw);

     Response.Write(sw.ToString());

    Response.End();

    מקווה שזה יעזור למישהו


    מנשה
    • סומן כתשובה על-ידי מנשה-דרור יום שני 07 מרץ 2011 07:41
    יום שני 07 מרץ 2011 07:41

כל התגובות

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

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


    Arik Poznanski
    blogs.microsoft.co.il/blogs/arik

    יום ראשון 06 מרץ 2011 19:53
  • לצערי לא מצאתי פיתרון רלוונטי של כולל שימוש ב רגסטרי ולכן פתרתי את הבעיה ע"י שינוי הקוד

    זה הקוד שכתבתי כדי לשמור למשתמש קובץ אקסל/וורד

    GridView gv = new GridView();

     gv.DataSource = DoTable();

     gv.DataBind();

     Response.Clear();

    Response.Buffer = true;

     Response.ContentType = "application/vnd.ms-excel"; //כאן ניתן לכתוב WORD במקום EXCEL

    string guid = System.Guid.NewGuid().ToString();

     Response.AddHeader("content-disposition", @"attachment;filename=" + guid + ".xls");//במקרה של WORD צריך לשנות את הסיומת

     Response.Charset = "";

     this.EnableViewState = false;

    System.IO.StringWriter sw = new System.IO.StringWriter();

     System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

     gv.RenderControl(htw);

     Response.Write(sw.ToString());

    Response.End();

    מקווה שזה יעזור למישהו


    מנשה
    • סומן כתשובה על-ידי מנשה-דרור יום שני 07 מרץ 2011 07:41
    יום שני 07 מרץ 2011 07:41