2016-07-26 6 views
1

Я использую POI в моем коде C# в течение нескольких недель, и я нашел и выпустил, я не могу решить: Xlsm.Чтение/запись XLSM с использованием POI

Я должен открыть шаблон xlsm, отредактировать его и сохранить. Шаблон содержит макрос, но я просто добавляю данные в файл xlsm. На самом деле, я думаю, что Read и Edit работают находкой (благодаря отладке в vs), проблема в том, когда я пытаюсь написать ... Код работает, нет ошибки, но когда я пытаюсь открыть его с помощью Excel, он выходит из строя ..

FileStream temp = new FileStream(xlsm_file, FileMode.Open, FileAccess.ReadWrite); 
XSSFWorkbook workbook = (XSSFWorkbook)WorkbookFactory.Create(temp); 
XSSFSheet sheet = (XSSFSheet)workbook.GetSheetAt(0); 
workbook.SetSheetName(0, sheetname.Substring(0, Math.Min(sheetname.Length, 30))); 
temp.Close(); 
FileStream toWrite = new FileStream(xlsm_file, FileMode.Open, FileAccess.ReadWrite); 
workbook.Write(toWrite); 
toWrite.Close(); 

, например, даже это выходит из строя ..

ли кто-нибудь, имеющий идею? Спасибо!

ответ

0

вам необходимо написать свой встроенный макрос в соответствующем формате, например, я прочитал файл .xltm и напишу его с типом MIME .xltm. см ниже функции

 public ActionResult DownloadXLTMFile() 
      { 
       try 
       { 
        //Get your macro enabled file after manipulation 
        MemoryStream excelMS = ..... 
        //Using Resposne Stream to Make File Available for User to Download; 
        Response.Clear(); 

        Response.ContentType = "application/vnd.ms-excel.template.macroEnabled.12"; 
        Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "YourFileName.xltm")); 

        Response.BinaryWrite(excelMS.ToArray()); 
        Response.End(); 
       } 
       catch (Exception Ex) 
       { } 
       finally 
       {} 
       return View(); 
      } 

Вы можете найти соответствующий тип MIME here

Смежные вопросы