使用streamwriter从c#创build多张excel表格

我正在使用streamwriter创build一个excel文件。 但问题是,我没有find一种方法来创build多个工作表,并从C#指定他们的名字。 另外我想使用Streamwriter在excel上绘制图表。 那么有没有人有一个想法如何使用Streamwriter做这两件事情,而不是Excel实例? 我的代码是这样的:

String sPath = Environment.GetEnvironmentVariable("TEMP") + "\\Synthese.xls"; FileStream oFile = new FileStream(sPath, FileMode.Create); StreamWriter oWriter = new StreamWriter(oFile, System.Text.Encoding.UTF8); oWriter.WriteLine("<table border='1' border-color='#ffffff' style=font-weight:bold;><tr>"); ... oWriter.Close(); oFile.Close(); FileInfo myFile = new FileInfo(sPath); Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + myFile.Name); Response.AddHeader("Content-Length", myFile.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.WriteFile(myFile.FullName); Response.Flush(); Response.End(); 

任何帮助,高度赞赏。

它看起来像你试图写一个xls文件的伪HTML,并希望它的工作…如果Excel甚至打开它,我会感到惊讶。

你最好使用适当的工具来完成这项工作。

我build议看一下EPPlus ,它允许你用C#创build你所描述的所有function的Excel文档。

从codeplex站点解除示例:

 FileInfo newFile = new FileInfo(outputDir.FullName + @"\sample6.xlsx"); ExcelPackage pck = new ExcelPackage(newFile); //Add the Content sheet var ws = pck.Workbook.Worksheets.Add("Content"); ws.View.ShowGridLines = false; //Headers ws.Cells["B1"].Value = "Name"; ws.Cells["C1"].Value = "Size"; ws.Cells["D1"].Value = "Created"; ws.Cells["E1"].Value = "Last modified"; ws.Cells["B1:E1"].Style.Font.Bold = true; 

另外,在使用IDisposable类(如FileStream时,最好使用using语句:

 using (var stream = new FileStream(path, FileMode.Create)) { // ... stuff using stream in here }