【问题标题】:Saving data to excel file将数据保存到excel文件
【发布时间】:2015-01-16 17:55:40
【问题描述】:

我基本上需要将存储过程的输出保存到.xls.xlsx Excel 文件中。我可以对 csv 做到这一点,但不能对 Excel 做到这一点。有人可以帮忙吗?请看下面的代码

var result = DealingContext.PopulateUnitRebateData(true, Convert.ToDateTime("2015-01-16")).ToList();

if (result.Count > 0)
{
    string header = @"""Firm ID"",""AccountNumber"",""Portfolio Name"",""Currency"",""Amount"",""Value Date""";
    StringBuilder sb = new StringBuilder();
    sb.AppendLine(header);

    foreach (var i in result)
    {
        sb.AppendLine(string.Join(",",
                            string.Format(@"""{0}""", i.FirmID),
                            string.Format(@"""{0}""", i.AccountNumber),
                            string.Format(@"""{0}""", i.PortfolioName),
                            string.Format(@"""{0}""", i.Currency),
                            string.Format(@"""{0}""", i.Amount),
                            string.Format(@"""{0}""", i.ValueDate)));
    }

    HttpContext context = HttpContext.Current;
    context.Response.Write(sb.ToString());
    context.Response.ContentType = "application/vnd.ms-excel";
    context.Response.AddHeader("Content-Disposition", "attachment; filename=TestData.xls");
    context.Response.End();
}

【问题讨论】:

  • 它没有保存在 excel 文件中,因为 excel 不是 CSV 的逗号分隔文件,我建议你在 dot net 中寻找用于生成 excel 文件的 OpenXML SDK,它非常简单并且提供你对文件的控制力很强。

标签: asp.net asp.net-mvc asp.net-mvc-4 c#-4.0 c#-3.0


【解决方案1】:

无法将其保存到 excel 的原因是 excel 的格式与 csv 不同。

我用来将数据保存到 excel 的最好(也是最简单)的库是 LinqToExcel https://code.google.com/p/linqtoexcel/

Nuget

PM> Install-Package LinqToExcel

【讨论】:

    【解决方案2】:

    您可以尝试使用 Microsoft.Office.Interop.Excel 将数据导出到 Excel

    传递数据集,它至少有一个数据表和有效的文件名和路径。

        public void WriteToExcel(DataSet dataSet , string fileNameWithPath)
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;
    
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            try
            {
                string data = string.Empty;
    
        //Setting up Columns on Excel
                for (int i = 0; i < 1; i++)
                {
                    for (int j = 0; j <= dataSet.Tables[0].Columns.Count - 1; j++)
                    {
                        data = dataSet.Tables[0].Columns[j].ColumnName.ToString();
                        xlWorkSheet.Cells[i + 1, j + 1] = data;
                    }
                }
    
        //data Insertion
                for (int i = 0; i <= dataSet.Tables[0].Rows.Count - 1; i++)
                {
                    for (int j = 0; j <= dataSet.Tables[0].Columns.Count - 1; j++)
                    {
                        xlWorkSheet.Cells[i + 2, j + 1].NumberFormat = "@"; //format as text
                        data = result.Tables[0].Rows[i].ItemArray[j].ToString();
                        xlWorkSheet.Cells[i + 2, j + 1] = data;
                    }
                }
                Excel.Range range = xlWorkSheet.Range[xlWorkSheet.Cells[1, 1], xlWorkSheet.Cells[1, result.Tables[0].Columns.Count]];
                range.Font.Bold = true;
                range.Interior.ColorIndex = 15;
                range.EntireColumn.AutoFit();
    
                xlWorkSheet.PageSetup.LeftMargin = 0.5;
                xlWorkSheet.PageSetup.RightMargin = 0.5;
                xlWorkSheet.PageSetup.Zoom = false;
                xlWorkSheet.PageSetup.FitToPagesWide = 1;
                xlWorkSheet.PageSetup.FitToPagesTall = Math.Ceiling((result.Tables[0].Rows.Count + 1) / 50.0);
                xlWorkSheet.PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape;
                xlWorkSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLetter;
    
                xlWorkBook.SaveAsfileNameWithPathExcel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
    
    
                xlWorkBook.Close(true, misValue, misValue);
                xlApp.Quit();
    
    
            }
            catch (Exception ex)
            {
    
    
            }
    
    
            finally
            {   
        xlWorkSheet = null;
                xlWorkBook = null;
                if (xlApp != null)
                {
                    xlApp.Quit();
                }
                xlApp = null;
    
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 2021-07-14
      • 2017-04-10
      相关资源
      最近更新 更多