首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用POI读/写XLSM

使用POI读/写XLSM
EN

Stack Overflow用户
提问于 2016-07-26 17:02:57
回答 1查看 1.2K关注 0票数 1

我在我的c#代码中使用POI已经有几个星期了,我发现了一个我无法解决的问题: Xlsm。

我必须打开一个xlsm模板,编辑并保存它。该模板包含Macro,但我只是将数据添加到xlsm文件中。实际上,我认为Read和Edit是工作中的find (感谢在vs中的调试),问题是当我试图写...代码工作正常,没有错误,但是当我尝试用Excel打开它时,它崩溃了。

代码语言:javascript
复制
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(); 

例如,即使这个程序崩溃了..

有没有人有主意?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-07-07 01:35:54

您需要以适当的格式编写宏嵌入文件,例如,我读取.xltm文件并使用其MIME类型.xltm进行写入。请参阅以下函数

代码语言:javascript
复制
     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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38585471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档