无法保存到azure云服务文件夹中的目录

时间:2017-05-26 01:43:36

标签: asp.net-mvc excel office-interop azure-cloud-services server.mappath

我正在尝试使用Microsoft.Office.Interop.Excel创建一个Excel文件,虽然这似乎在我的本地计算机上使用以下代码:

//Start Excel and get Application object.
oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = true;

//Get a new workbook.
oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(""));
oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;

//Add Contact Details for Manager
oSheet.Cells[1, 1] = "Account Manager";
oSheet.Cells[2, 1] = "Manager Name";
oSheet.Cells[3, 1] = "+44(0)2871262626";
oSheet.Cells[4, 1] = "test@email.com";
oSheet.get_Range("A1", "A4").Font.Bold = true;

oXL.DisplayAlerts = false;
oWB.SaveAs(Server.MapPath("~/TransitFiles/") + bill.Landlord.Name + " Group Bill " + bill.LandlordBillID + ".xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

当我尝试将此部署到我的azure云服务时,我无法生成文件,尽管已复制dll并且由于我放置的holder.txt文档而创建了相关的文件夹位置那里,在Excel中将ActionResult文档显示为MVC的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

  

当我尝试将此部署到我的azure云服务时,尽管有dll,我仍然无法生成文件

由于Azure WebRole上存在无MS Office ,因此我们无法使用Office InterOP Dll。

我们可以使用OpenXml SDK。我做了一个演示,它在我身边正常工作。以下是根据您的代码我的演示代码。我们还可以从document获得更多关于使用OPenXML操作excel的代码。

        var fileName = Server.MapPath("~/")+@"OpenXMltest.xlsx";
        using (SpreadsheetDocument document = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook))
        {
            WorkbookPart workbookPart = document.AddWorkbookPart();
            workbookPart.Workbook = new Workbook();

            WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
            var sheetData = new SheetData();
            worksheetPart.Worksheet = new Worksheet(sheetData);

            Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

            Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Test Sheet" };

            List<String> columns = new List<string>();

            Row newRow1 = new Row();
            Row newRow2 = new Row();
            Row newRow3 = new Row();
            Row newRow4 = new Row();

            Cell cell1 = new Cell
            {
                DataType = CellValues.String,
                CellValue = new CellValue("Account Manager")
            };
            Cell cell2 = new Cell
            {
                DataType = CellValues.String,
                CellValue = new CellValue("Manager Name")
            };
            Cell cell3 = new Cell
            {
                DataType = CellValues.String,
                CellValue = new CellValue("+44(0)2871262626")
            };
            Cell cell4 = new Cell
            {
                DataType = CellValues.String,
                CellValue = new CellValue("test@email.com")
            };

            newRow1.AppendChild(cell1);
            newRow2.AppendChild(cell2);
            newRow3.AppendChild(cell3);
            newRow4.AppendChild(cell4);
            sheetData.AppendChild(newRow1);
            sheetData.AppendChild(newRow2);
            sheetData.AppendChild(newRow3);
            sheetData.AppendChild(newRow4);
            sheets.Append(sheet);

            workbookPart.Workbook.Save();
        }
  

在MVC中将Excel文档显示为ActionResult的最佳方法是什么?

如果我们想显示文档,根据我的经验,我们可以使用dataview来做到这一点。