Pagina .cs:
codice:using ExcelDataReader; using RegistroPrivacy.Helpers; using RegistroPrivacy.Models; using System; using RegistroPrivacy.Repositories; using System.Collections.Generic; using System.Data; using System.IO; using System.Web; using System.Web.Mvc; using NPOI.HPSF; using NPOI.HSSF.UserModel; using NPOI.POIFS.FileSystem; using NPOI.SS.UserModel; using System.Text; using NPOI.SS.Util; using System.Data.Entity.Core.EntityClient; namespace RegistroPrivacy.Controllers { [UFRPUserAuthorize(Roles = "Admin")] [UFRPUserPasswordCheckAttribute] public class RPImportController : Controller { static public byte[] b; string message = ""; private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); readonly ISocietaRepository societaRepository; readonly IRPImportHelper importHelper; public RPImportController(IRPImportHelper importHelper, ISocietaRepository societaRepository) { this.importHelper = importHelper; this.societaRepository = societaRepository; } // GET: RPImport public ActionResult ImportData() { return View(); } // POST: RPImport [HttpPost] [ValidateAntiForgeryToken] [LogFilter] public ActionResult ImportData(HttpPostedFileBase uploadfile) { if (ModelState.IsValid) { if (uploadfile != null && uploadfile.ContentLength > 0) { IExcelDataReader reader = null; Stream stream = uploadfile.InputStream; DataSet result = null; try { reader = ExcelReaderFactory.CreateReader(stream); result = reader.AsDataSet(); } catch (Exception e) { log.Fatal(e); ModelState.AddModelError("uploadfile", SocietaModelMessages.SocietaModelMessages.invalidFormat); return View(); } finally { if (reader!=null) { reader.Close(); } } DataTable dataTable = result.Tables[0]; var validationErrors = importHelper.validate(dataTable, User); if (validationErrors.Count == 0) { List<RPTrattamento> tuttiTrattamenti = importHelper.tranformData(dataTable, User); var trattamentiPerSocieta = new Dictionary<int, List<RPTrattamento>>(); foreach (var trattamento in tuttiTrattamenti) { if (!trattamentiPerSocieta.ContainsKey(trattamento.SocietaId)) { var listSocieta = new List<RPTrattamento>(); listSocieta.Add(trattamento); trattamentiPerSocieta.Add(trattamento.SocietaId, listSocieta); } else { var listSocieta = trattamentiPerSocieta[trattamento.SocietaId]; listSocieta.Add(trattamento); } } var message = new List<string>(); foreach (var item in trattamentiPerSocieta) { int societaId = item.Key; var db = new SocietaModelContainer(societaRepository.GetSocietaContext(societaId)); db.RPTrattamentoSet.AddRange(item.Value); db.SaveChanges(); message.Add(string.Format(SocietaModelMessages.SocietaModelMessages.importOk, item.Value.Count, uploadfile.FileName, societaRepository.GetSocieta(societaId).NomeSocieta)); } TempData["succes"] = message; } else { foreach (var validationItem in validationErrors) { ModelState.AddModelError(validationItem.Key, validationItem.Value); } } return View(); } } return View(); } public ActionResult GetMessage() { HSSFWorkbook hssfworkbook = new HSSFWorkbook(); //Apertura istanza tabelle database using (var context = new Models.SocietaModelContainer("sdemo")) { var Responsabile = context.RPSoggettiPartecipantiSet.Local[0].Id; } ////create a entry of DocumentSummaryInformation DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation(); dsi.Company = "NPOI Team"; hssfworkbook.DocumentSummaryInformation = dsi; ////create a entry of SummaryInformation SummaryInformation si = PropertySetFactory.CreateSummaryInformation(); si.Subject = "NPOI SDK Example"; hssfworkbook.SummaryInformation = si; //here, we must insert at least one sheet to the workbook. otherwise, Excel will say 'data lost in file' //So we insert three sheet just like what Excel does ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); IRow row0 = sheet1.CreateRow(0); IRow row1 = sheet1.CreateRow(1); IRow row2 = sheet1.CreateRow(2); IFont font1 = hssfworkbook.CreateFont(); font1.FontHeightInPoints = 28; font1.Boldweight = (short)FontBoldWeight.Bold; IFont font2 = hssfworkbook.CreateFont(); font2.FontHeightInPoints = 11; font2.Boldweight = (short)FontBoldWeight.Bold; IFont font3 = hssfworkbook.CreateFont(); font3.FontHeightInPoints = 8; font3.Boldweight = (short)FontBoldWeight.Normal; ICellStyle styleCenter1 = hssfworkbook.CreateCellStyle(); styleCenter1.Alignment = HorizontalAlignment.Center; styleCenter1.VerticalAlignment = VerticalAlignment.Center; styleCenter1.WrapText = true; styleCenter1.SetFont(font1); //styleCenter1.BorderBottom = BorderStyle.Thick; //styleCenter1.BorderLeft = BorderStyle.Thick; //styleCenter1.BorderRight = BorderStyle.Thick; //styleCenter1.BorderTop = BorderStyle.Thick; ICellStyle styleCenter2 = hssfworkbook.CreateCellStyle(); styleCenter2.Alignment = HorizontalAlignment.Center; styleCenter2.VerticalAlignment = VerticalAlignment.Center; styleCenter2.WrapText = true; styleCenter2.SetFont(font2); ICellStyle styleCenter3 = hssfworkbook.CreateCellStyle(); styleCenter3.Alignment = HorizontalAlignment.Center; styleCenter3.VerticalAlignment = VerticalAlignment.Center; styleCenter3.WrapText = true; styleCenter3.SetFont(font3); row0.CreateCell(0).SetCellValue("REGISTRO ATTIVITÀ DI TRATTAMENTO DEL TITOLARE"); sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, 23)); row0.Height = 50 * 20; row0.GetCell(0).CellStyle = styleCenter1; row1.CreateCell(0).SetCellValue("Soggetti partecipanti al trattamento"); sheet1.AddMergedRegion(new CellRangeAddress(1, 1, 0, 4)); row1.GetCell(0).CellStyle = styleCenter2; row1.CreateCell(5).SetCellValue("Informazioni sulle attività di trattamento"); sheet1.AddMergedRegion(new CellRangeAddress(1, 1, 5, 16)); row1.GetCell(5).CellStyle = styleCenter2; row1.CreateCell(17).SetCellValue("Misure di sicurezza tecniche ed organizzative e rischi"); sheet1.AddMergedRegion(new CellRangeAddress(1, 1, 17, 19)); row1.GetCell(17).CellStyle = styleCenter2; row1.CreateCell(20).SetCellValue("Trasferimento verso Paese terzo (se previsto)"); sheet1.AddMergedRegion(new CellRangeAddress(1, 1, 20, 22)); row1.GetCell(20).CellStyle = styleCenter2; row1.CreateCell(23).SetCellValue("Note lavoro"); row1.GetCell(23).CellStyle = styleCenter2; row2.CreateCell(0).SetCellValue("Nome Società Titolare del trattamento"); row2.CreateCell(1).SetCellValue("Responsabile del trattamento (se previsto)"); row2.CreateCell(2).SetCellValue("Responsabile della protezione dei dati (se nominato)"); row2.CreateCell(3).SetCellValue("Rappresentante UE del Titolare non stabiliti nell'UE (se previsto)"); row2.CreateCell(4).SetCellValue("Contatti Contitolare"); row2.CreateCell(5).SetCellValue("Funzione Aziendale"); row2.CreateCell(6).SetCellValue("Attività di trattamento"); row2.CreateCell(7).SetCellValue("Descrizione dettagliata del trattamento"); row2.CreateCell(8).SetCellValue("Finalità del trattamento"); row2.CreateCell(9).SetCellValue("Interessati al trattamento dei dati"); row2.CreateCell(10).SetCellValue("Categoria dati"); row2.CreateCell(11).SetCellValue("Approfondimento categoria dati"); row2.CreateCell(12).SetCellValue("Base giuridica del trattamento"); row2.CreateCell(13).SetCellValue("Categoria destinatari a cui i dati personali sono stati o saranno comunicati / Società del gruppo a cui sono trasferiti i dati (se previsto)"); row2.CreateCell(14).SetCellValue("Termine cancellazione dei dati o criteri adottati"); row2.CreateCell(15).SetCellValue("Tipo di trattamento (automatizzato o non)"); row2.CreateCell(16).SetCellValue("Applicativi correlati al trattamento"); row2.CreateCell(17).SetCellValue("Descrizione delle misure di sicurezza organizzative e tecniche"); row2.CreateCell(18).SetCellValue("Descrizione del rischio per l'interessato"); row2.CreateCell(19).SetCellValue("Data breach - casi possibili"); row2.CreateCell(20).SetCellValue("Paese o Organizzazione a cui si invia"); row2.CreateCell(21).SetCellValue("Paese o Organizzazione da cui si riceve"); row2.CreateCell(22).SetCellValue("Garanzie ex art. 49 GDPR"); for (int i=0;i<23;i++) { row2.GetCell(i).CellStyle = styleCenter3; } int x = 1; for (int i = 3; i <= 10; i++) { IRow row = sheet1.CreateRow(i); for (int j = 0; j < 24; j++) { row.CreateCell(j).SetCellValue(x++); row.GetCell(j).CellStyle = styleCenter3; } } //Write the stream data of workbook to the root directory FileStream file = new FileStream(@"C:\Users\buffo\Desktop\test.xls", FileMode.Create); hssfworkbook.Write(file); file.Close(); //try //{ // MemoryStream bos = new MemoryStream(); // try // { // hssfworkbook.Write(bos); // } // finally // { // bos.Close(); // } // b = bos.ToArray(); // Response.Clear(); // Response.AddHeader("content-disposition", "attachment;filename=test.xlsx"); // Response.Charset = ""; // Response.Cache.SetNoServerCaching(); // Response.ContentType = "application/ms-excel"; // Response.BinaryWrite(b); //} //catch (Exception) //{ // message = "Download non riuscito"; // return new JsonResult { Data = message, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; //} message = "Download eseguito"; return new JsonResult { Data = message, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } } }

Rispondi quotando