Archive for the ‘c#’ Category
Return pdf to browser in a C# razor page using itext7
Sample code to return a PDF file to the browser in a Razor c# page using itext7.
using System; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using System.IO; public IActionResult OnPostManipulatePdf(String dest) { MemoryStream ms = new MemoryStream(); PdfWriter writer = new PdfWriter(ms); PdfDocument pdfDoc = new PdfDocument(writer); Document doc = new Document(pdfDoc); writer.SetCloseStream(false); Paragraph header = new Paragraph("header"); doc.Add(header); doc.Close(); byte[] byteInfo = ms.ToArray(); ms.Write(byteInfo, 0, byteInfo.Length); ms.Position = 0; FileStreamResult fileStreamResult = new FileStreamResult(ms, "application/pdf"); //Uncomment this to return the file as a download //fileStreamResult.FileDownloadName = "Output.pdf"; return fileStreamResult; }
Source:
https://stackoverflow.com/questions/1510451/how-to-return-pdf-to-browser-in-mvc
Split an Excel file’s tabs into CSV with C#
Split an Excel file into csv, with each tab going into a separate csv file, in the background using C#.
using System.IO; using Microsoft.Office.Interop.Excel; Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); //Run in background app.DisplayAlerts = false; //Open excel file Workbook wb = app.Workbooks.Open("path_to_excel.xls"); //Iterate through sheets in the excel file foreach (Worksheet sheet in wb.Worksheets) { string sheetName = sheet.Name; //Output file name string outputFilepath = sheetName + ".csv"; //Save the sheet as CSV sheet.SaveAs(outputFilepath, XlFileFormat.xlCSVWindows); } //Clean-up wb.Close(); app.Quit();
Validating a XML against XSD schema in C#
Inputs:
xmlFileName: Input XML file name
schemaFileName: Input XSD file name
Output:
results: Results output
using System.Xml; using System.Xml.Schema; using System.IO; static List<string> results = new List<string>(); static void Validate(string xmlFileName, string schemaFileName) { XmlDocument x = new XmlDocument(); string source = xmlFileName; x.Load(source); XmlReaderSettings settings = new XmlReaderSettings(); settings.CloseInput = true; settings.ValidationEventHandler += Handler; settings.ValidationType = ValidationType.Schema; settings.Schemas.Add(null, schemaFileName); settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings | XmlSchemaValidationFlags.ProcessIdentityConstraints | XmlSchemaValidationFlags.ProcessInlineSchema | XmlSchemaValidationFlags.ProcessSchemaLocation; StringReader r; using (StreamReader sr = new StreamReader(source)) { r = new StringReader(sr.ReadToEnd()); } using (XmlReader validatingReader = XmlReader.Create(r, settings)) { while (validatingReader.Read()) { /* just loop through document */ } } } private static void Handler(object sender, ValidationEventArgs e) { if (e.Severity == XmlSeverityType.Error || e.Severity == XmlSeverityType.Warning) results.Add(String.Format("Line: {0}, Position: {1} "{2}"", e.Exception.LineNumber, e.Exception.LinePosition, e.Exception.Message)); }
C#: Recursively getting a list of files with a specific extension
How to recursively get a list of files with a specific extension in C#.
Inputs:
sDir – Starting directory
SExtension – file extension to filter by
List files – A empty list that is used to keep found files while recursing.
public List<string> getFiles(string sDir, string sExtension, List<string> files) { foreach (string d in Directory.GetDirectories(sDir)) { foreach (string f in Directory.GetFiles(d)) { if (f.EndsWith(sExtension)) { files.Add(f); } } getFiles(d, sExtension, files); } return files; }
Starting Source:
http://stackoverflow.com/questions/929276/how-to-recursively-list-all-the-files-in-a-directory-in-c