Здравствуйте. вопрос такой: на компе не установлен Excel 2007, прога работает с Interop ver.12
работа с файлами 2003 проходит на ура, но с 2007-го формата происходит лажа, которая заключается в следующем: 1.при открытии файла вылезает предупреждение "Неизвестный формат файла", которое я игнорирую 2. когда я вношу изменения в ячейку и сохраняю workbook(кстати эти процессы происходят без ошибок), а потом пытаюсь вручную открыть файл, то вылезает ошибка "Excel cannot open the file because the file format or file extension is not valid"
Сейчас многие скажут: "Это ведь лгично, у тебя не установлен 2007 офис", но:
3. когда я не вношу изменения в ячейку и сохраняю workbook, то вручную файл открывается без всяких ошибок с помощью конвертера (откуда он у меня взялся на компе, не знаю )
код:
Код | private bool FormatDocument(string fileName,int[] columnNumbers,ref string SheetName) { string extension = System.IO.Path.GetExtension(fileName); if (!System.IO.File.Exists(fileName) || (extension!=".xls" && extension!=".xlsx")) return false; xl.Application xlApp = null; xl.Workbooks xlWBs = null; xl._Workbook EWb = null; xl.Sheets xlSheets = null; xl._Worksheet ESh = null; xl.Range ERg = null; object optdef = System.Reflection.Missing.Value; try { xlApp = new xl.Application(); } catch (Exception ex) { Response.Write("<script>alert('"+ex.Message+"')</script>"); return false; } // xlApp.IgnoreRemoteRequests = true; xlApp.DisplayAlerts = false; xlWBs = (xl.Workbooks)xlApp.Workbooks; EWb = xlWBs.Open(fileName,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true, Type.Missing, Type.Missing, Type.Missing); ; xlSheets = (xl.Sheets)EWb.Worksheets; ESh = (xl._Worksheet) (xlSheets.get_Item(1)); SheetName = ESh.Name; //вот здесь происходят изменения // for (int i = 0; i < columnNumbers.Length; i++) // ESh.Cells[2, columnNumbers[i]] = string.Format("'{0}", (ESh.get_Range(ESh.Cells[2, columnNumbers[i]], ESh.Cells[2, columnNumbers[i]])).get_Value(Type.Missing)); EWb.Close(true, System.Reflection.Missing.Value, System.Reflection.Missing.Value); // xlApp.IgnoreRemoteRequests = false; xlApp.Quit(); releaseObject(ERg); releaseObject(ESh); releaseObject(xlSheets); releaseObject(EWb); releaseObject(xlWBs); releaseObject(xlApp); // xlApp.UserControl = true; //Response.Write("<script>alert('OK!')</script>"); GC.GetTotalMemory(true); return true; }
|
|