Asp.net 将数据保存到excel文件
我基本上需要将存储过程的输出保存到.xls或.xlsx Excel文件中。我能够做到这一点,以一个csv,但不是Excel。有人能帮忙吗?请参阅下面的代码Asp.net 将数据保存到excel文件,asp.net,asp.net-mvc,asp.net-mvc-4,c#-4.0,c#-3.0,Asp.net,Asp.net Mvc,Asp.net Mvc 4,C# 4.0,C# 3.0,我基本上需要将存储过程的输出保存到.xls或.xlsx Excel文件中。我能够做到这一点,以一个csv,但不是Excel。有人能帮忙吗?请参阅下面的代码 var result = DealingContext.PopulateUnitRebateData(true, Convert.ToDateTime("2015-01-16")).ToList(); if (result.Count > 0) { string header = @"""Firm ID"",""Account
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不同 我用来将数据保存到excel的最好、最简单的库是LinqToExcel 努吉
您可以尝试使用Microsoft.Office.Interop.Excel将数据导出到Excel 传递数据集,该数据集至少有一个DataTable和带路径的有效文件名
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();
}
}
它不是保存在excel文件中,因为excel在CSV中不是逗号分隔的文件,我建议您寻找OpenXML SDK,以便在dot net中生成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();
}
}