Can anybody share c# code to validate whether the input excel file is the real excel file or an xmlexcel file(file generated by using xmlstream)
i want this because the user uploads his excel file and am using Microsoft.ACE.OLEDB.12.0 to import it into database after import the duplicates records(available in the uploaded excel file) were dumped to an excel(thru xmlstream) and given to the user as a download link ..the user then uses this file to upload again...but the Microsoft.ACE.OLEDB.12.0 doesn't recognizes it..so am using Extended Properties=HTML Import but i can't find a way to retrive the data from the file(as it is an xml based excel file)
Use the magic number signature from the following URL:
http://www.garykessler.net/library/file_sigs.html
You can use the values specified there to recognise if the file is a binary XLS.
You can validate file type by adding nested try..catch.. clause.
try
{
//open connnection for x file
}catch(Exception ex)
{
try
{
//open connection for y file
}catch(...)
{
}
}
Related
So the situation is the following. I have an Angular front end project and I want to import an excel file from the front end together with some additional properties.
The front end I will handle, but I have a couple of questions for the back end:
What should I be receiving as a variable type in the back end for the excel file?
I want to foreach the data from the excel file and get only specific data. For example, I have one sheet only with rows Name, Age and Number of transactions. I want to take only the name and number of transactions and save that information in a new instance of a class I have within my application.
How do I do that?
required before you start the OPEN XML SDK
First in asp you need to defined your method with a IFormFile variable or use the FileUpload Helper class
then you need to move the data into a stream eg IFormFile.CopyToAsync(Stream)
finally open the spreadsheet for read only access so you can read the data
this would look something like this
public async Task<IActionResult> OnPostUploadAsync(List<IFormFile> files)
{
foreach(var file in files)
{
using var mem = new MemoryStream();
await file .CopyToAsync(mem);
var doc = SpreadsheetDocument Open(mem, false);
...
this will open the file and parse the data in it as an excel spreadsheet
you can then use the spreadsheet methods to extract the data you require from inside the document
I have created a MVC project to view my crystal report. What I want to do now is export my crystal report to some specific file formats (PDF, Word, CSV etc). Before exporting the file I want to open my file explorer and give a name to the file, select export type, select specific folder and export it.
How can I do this?
Not sure if this works the same while using ASP.NET.
private string SelectLocation(string fileName)
{
SaveFileDialog brwsr = new SaveFileDialog();
brwsr.FileName = fileName;
brwsr.Filter = "Pdf|*.pdf";
//Check to see if the user clicked the cancel button
if (brwsr.ShowDialog() == DialogResult.Cancel)
return "";
else
{
string newDirectoryPath = brwsr.FileName;
return newDirectoryPath;
}
}
This is a piece of code to find out which path they want to use to save the file.
If you use a Crystal Report Viewer to display the report on-screen, there are controls within the viewer that would allow a user to export the report and choose the export format and the folder and filename where it is saved. Some of your users may need some training to make effective use of some of the export parameters though. For example, when exporting to Excel there are a number of additional export parameters that can be used.
The nice thing about this method of exporting reports is the export feature is already fully implemented and all you have to code for is the creation and display of the report.
I am using Asp.Net MVC application, Visual Studio 2013, SQL Server Data base
There is a particular location in my system's local drive i.e., c:/Files/Exim_Files/ , where a lot of excel(.xlsx) files are sitting.
I want to get the particular file from that location and save it programmatically (without Save pop up) in same location with same/different name. while saving the excel data should not be lost, file should be as it is, just I need to save/SaveAs it again.
How can I achieve this requirement?
Note that I am using Virtual Machine and inside Virtual Machine: Microsoft Office is not installed. So the code will have to work without Microsoft Office installation in the machine. I can only use Microsoft Office in my host machine.
Edit
In below code, I am using Aspose.Cells to save the Excel file from 1 location to another.
I am getting the particular File from sharedLocation in array "l_strFileUploadPath" and then checking, if the file that I am getting from user exists in shared location, then I want to save/SaveAs that
file into different location (defined in 'string str') along with entire data (say I want to import the data as well while Saving the Excel in different location).
The issue I am facing is that, the file that is getting saved in C: drive, is not saving the data which is present inside the Excel. It seems it is creating a new excel file in c: drive with same name (x-TECHNICAL_DIT_BUDV01_RV124_R01_2015_Test.xlsx) having 2 sheets.
1 is 'sheet 1' and another is 'Evaluation Warning' sheet.
How can I remove the 'Evaluation Warning' sheet and what is the method of saving the exact file (along with data) from shared drive to c: drive, as per my code.
This is the first time using Aspose.Cells to get and Save/SaveAs the file from 1 location to another.
protected void getFileAndSave()
{
string[] l_strFileUploadPath = Directory.GetFiles("//181.184.11.435/share//Temp/New folder");
foreach (var filename in l_strFileUploadPath)
{
string fileName = Path.GetFileName(filename);
string p_filename = "x-TECHNICAL_DIT_Test.xlsx"; //this is the file I am getting from user
if (fileName == p_filename)
{
//-- Using Aspose.Cells
Workbook wb = new Workbook();
Worksheet worksheet = wb.Worksheets["Sheet1"];
worksheet.Name = "Technical Data";
//Save workbook with export cell as true
OoxmlSaveOptions opts = new OoxmlSaveOptions();
opts.ExportCellName = true;
wb.Save(str + file, opts);
}
}
}
It seems for me that you just want to copy the file.
Take a look at File.Copy()
File.Copy(#"c:\excel.xsl", #"c:\other\excel.xsl");
EDIT for comment:
I think it will be hard to change app.xml metadata without just manually looking what changes are made there during save/saveAs and then trying to understand how to copy this behavior and change it programmatically inside that file.
When I read the data from .xlsx file(ope in microsft excel) it genrates the error "File is used in another process". For data reading, I am using File.ReadAllBytes(strPath) Function.
So is there is any solution/code, which can remove this type of error so that I can succesfully read the data.
try this
using (FileStream fs = File.Open(filepath,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))
{
// do you stuf
}
I am basically creating a xlsx file but I am getting an error while using that file like below.
System.IO.FileFormatException: Archive file cannot be size 0.
The way I tried.
string file = "c:\\DoneDone61.xlsx";
using(File.Create(file))
{
}
Also I cannot open excel file manually because it says the file is corrupted.
Thanks for answers in advance.
An Excel file which you consider to be "blank" is not just a file with no data in it (which is what you are creating). You can see this yourself by creating a document manually in Excel and then opening it in notepad. You'll notice that it actually has data inside of it. That data is used to store information regarding the three empty sheets named "Sheet1", "Sheet2" and "Sheet3". Also, there is some header information so that any program looking at the file knows that it is actually a compressed file (as per the Excel file format). So, as you can see, even a pretty empty excel file still contains SOME data.
If you want to create a blank excel document using C#, you have two good options:
Use a library that allows you to actually work with creating Excel documents that takes care of creating the file correctly. Check out something like the Microsoft OpenXML SDK or ExcelPackage.
Create an empty Excel document, store it somewhere, and when you want to "create" a new empty Excel document, just make a copy of this file.
This one ...
using(File.Create(filePath))
{
}
... creates an empty file. Read: really empty (=> 0 bytes) not an empty XLSX with an XLSX skeleton: ZIP container, file header, style definitions, ....
What exactly did you expect?
EDIT:
If you want to create an empty XLSX file (like "Right Click on Mouse > New > New Microsoft Excel"), you have to use such an template, ... and write it onto the disk.
To achieve that, you have to deploy this template file with your application, and then do a File.Copy(source, dest), or integrate it as a resource and write the resource content to the disk.
What you need to use is Interop.Excel namespace. Here's a guide from msdn
please use this...Its a bit hacky but couldn't get a better way to do this using InterOp
public static void CreateEmptyXLSXFile(string FilePath)
{
FileStream MyStream = new FileStream(FilePath, FileMode.CreateNew, FileAccess.ReadWrite);
MyStream.Write(ExcelDocumentsInterOps.GetEmptyXSLXFileBytes(), 0, ExcelDocumentsInterOps.GetEmptyXSLXFileBytes().Length);
MyStream.Flush();
MyStream.Close();
MyStream.Dispose();
MyStream = null;
}
/// <summary>
/// Returns the bytes for an empty xslx file
/// </summary>
/// <returns></returns>
public static byte[] GetEmptyXSLXFileBytes()
{
string TheSting = "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";
return Convert.FromBase64String(TheSting);
}
When dealing with spreadsheet related tasks in .NET, you can use this open source library called SpreadsheetLight to write an excel file (especially, if you want to write content at some point).
If you prefer adding it as package via Nuget, you can say:
Install-Package SpreadsheetLight
After that, going by GenerateReport() exmaple:
// this one creates an empty workbook
using (SLDocument sl = new SLDocument())
{
// sl.SetCellValue("B3", "I love ASP.NET MVC");
sl.SaveAs("c:\\DoneDone61.xlsx");
}
Also see their tutorial for more interesting stuff.