In this a assembly, i was exporting excel file directly to the local disk but now i am trying to do this in two steps: first to write it to memorystream , and then save the memory stream to the local disk. Not sure if this is right or not. it does not give me anything whenever i run. thoughts?
public static void Createxlsx(string filename)
{
FileInfo newFile = new FileInfo ("C:\\ConsoleApplicationXLSX\\" + filename + ".xlsx");
MemoryStream stream = new MemoryStream();
//create a package
using (var package = new ExcelPackage(stream))
{
var worksheet = package.Workbook.Worksheets.Add("worksheet");
package.Save();
}
}
public static void Createxlsx(string filename)
{
MemoryStream stream = new MemoryStream();
//create a package
using (var package = new ExcelPackage(stream)) // disposing ExcelPackage also disposes the above MemoryStream
{
var worksheet = package.Workbook.Worksheets.Add("worksheet");
package.Save();
// see the various ways to create/open a file, Create is just one of them
// open the file stream
using(var file = System.IO.File.Open("C:\\ConsoleApplicationXLSX\\" + filename + ".xlsx", System.IO.FileMode.CreateNew))
{
stream.Position = 0; // reset the position of the memory stream
stream.CopyTo(file); // copy the memory stream to the file stream
}
}
}
Some notes
using
statements. This will ensure that the stream is always released/freed (using the implemented IDisposable interface) after it is out of scope.CreateNew
will throw an exception if you try to overwrite an existing file. If you do not care about that use Create
instead.Edit
You could also do this without the MemoryStream
.
public static void Createxlsx(string filename)
{
using(var file = System.IO.File.Open("C:\\ConsoleApplicationXLSX\\" + filename + ".xlsx", System.IO.FileMode.CreateNew))
using (var package = new ExcelPackage(file)) // disposing ExcelPackage also disposes the above MemoryStream
{
var worksheet = package.Workbook.Worksheets.Add("worksheet");
package.Save();
}
}