3

所以这是我在 C# 和互操作中生成 excel 文件的代码:

         Dictionary<Item, Shift_ItemSales> data = getData(curPage, depID);

         Application excelapp = new Application();
         excelapp.Visible = false;

         _Workbook workbook = (_Workbook)(excelapp.Workbooks.Add(Type.Missing));
         _Worksheet worksheet = (_Worksheet)workbook.ActiveSheet;

         worksheet.Cells[0, 1] = "ID";
         worksheet.Cells[0, 2] = "Description";

         int row = 1;
         foreach (Item curItem in data.Keys) {
             Shift_ItemSales curIS = data[curItem];
             worksheet.Cells[row, 0] = curItem.ID;
             worksheet.Cells[row, 1] = curItem.Description;
             row++;
         }

如何将其发送到浏览器并让用户下载?

4

1 回答 1

3

您应该FileResult用于此目的。

    [HttpPost]
    public FileResult ExcelDownload(ReportDownloadRequest reportRequest)
    {
           //Code to generate Excel file with GemBox.Spreadsheet

           return new FileStreamResult(report, "application/ms-excel")
           {
               FileDownloadName = "SalesReport.xls"
           };
    }

对于 Excel 工作表,您可以使用GemBox.Spreadsheet免费版提供与专业版相同的性能和一组功能。但是,施加了以下限制:

  • 每张纸的最大行数为 150。
  • 每个工作簿的最大工作表数为 5。

GemSheet 示例代码:

 // Set license key to use GemBox.Spreadsheet in a Free mode.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");

// Create new empty Excel file.
var workbook = new ExcelFile();

// Create new worksheet and set cell A1 value to 'Hello world!'.
workbook.Worksheets.Add("Test").Cells["A1"].Value = "Hello world!";

// Save to XLSX file.
workbook.Save("Test.xlsx");
于 2013-06-11T18:04:39.113 回答