public static MemoryStream Export <TData>(ExportConfiguration <TData> exportConfiguration, List <TData> data) { using (var pck = new ExcelPackage()) { // Create the worksheet var sheet = pck.Workbook.Worksheets.Add(exportConfiguration.FileName); // Execute the func var headers = exportConfiguration.DataMapper.Keys.ToList(); // Set columns headers for (var i = 0; i < headers.Count; i++) { sheet.Cells[1, i + 1].Value = headers[i]; } // Fill the data if (data.Any()) { var loadedData = data.Select(x => exportConfiguration.DataMapper.Values.Select(y => y(x)).ToArray()).ToList(); sheet.Cells["A2"].LoadFromArrays(loadedData); } // Create the file stream var stream = new MemoryStream(EpplusCsvConverter.ConvertToCsv(pck)) { Position = 0 }; return(stream); } }
private void btnMakeCsv_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "Open XSLX Master"; ofd.Multiselect = true; if (ofd.ShowDialog() == DialogResult.OK) { foreach (string excelPath in ofd.FileNames) { label1.Text = Path.GetFileNameWithoutExtension(excelPath); savePath = Path.GetDirectoryName(excelPath); string folderName = Path.GetFileNameWithoutExtension(excelPath); using (var package = new ExcelPackage(new FileInfo(excelPath))) { if (!Directory.Exists(savePath + "\\" + folderName)) { System.IO.Directory.CreateDirectory(savePath + "\\" + folderName); } int sheetsNumber = package.Workbook.Worksheets.Count; for (int i = 1; i <= sheetsNumber; i++) { string TargetFile = savePath + "\\" + folderName + "\\" + package.Workbook.Worksheets[i].Name + ".csv"; if (System.IO.File.Exists(TargetFile)) { System.IO.File.Delete(TargetFile); } EpplusCsvConverter.ConvertToCsv(package, TargetFile, i); } } //move file to folder System.IO.File.Move(excelPath, (savePath + "\\" + folderName + "\\" + folderName + ".xlsx")); } } }