I was wondering if someone can assist me in achieving the C# code below in either EPPlus or OpenOffice XML:
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
string excelFileName = "Sample.xlsx";
string currentDirectory = Directory.GetCurrentDirectory();
string excelFilePath = System.IO.Path.Combine(currentDirectory, excelFileName);
app.Workbooks.Open(excelFilePath,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
string xmlContent = string.Empty;
// Use the map (XSD inside the Excel file)
app.ActiveWorkbook.XmlMaps[1].ExportXml(out xmlContent);
app.Workbooks.Close();
Using Microsoft.Office.Interop.Excel.Application requires installation of Microsoft Office on the server. Is there any way around this other than installing Microsoft Engine?. Basically how to read XMLMap without office.Interop?
Thank you
Related
I working on the Excel in the server and when I trying to open my Excel file with Microsoft.Office.Interop.Excel, I have this error:
Exception de HRESULT : 0x800A03EC
I check my access to my file, and my IIS account have a full control on this. This is my code :
var excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Open(
Filepath,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing,
true
);
Thanks
I am opening an existing Excel file with following process:
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Visible = true;
Workbook w = excel.Workbooks.Open(#"E:\ishu\Test.xlsx"
, Type.Missing,
true, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing);
Worksheet ws = (Worksheet)w.Worksheets[1];
Microsoft.Office.Interop.Excel.Range xlRange = ws.UsedRange;
excel.Visible = true;
Excel process gets started in task manager but no Excel window get visible.
This probably isn't the answer you are looking for, but my application uses
System.Diagnostics.Process.Start(ExcelFileToOpen);
The above is run only when the Excel file exists.
We can attach document action pane to any excel file using Developer-> expansion pack-> Microsoft action pane -> attach.
Once the excel is saved and opening it again will have previously stored excel document.
I have an Excel file (refer image) and I wish to remove(detach) document action pane using inter op programming in c#. Is it possible do so?
code snippet :
Application xlApp = null;
try
{
xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
string versionNo = xlApp.Version;
xlApp.Visible = true;
Microsoft.Office.Core.MsoAutomationSecurity mso = xlApp.AutomationSecurity;
xlApp.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;
Workbook newWb = xlApp.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// Here want code to detach document action pane.
}
Try this:
Microsoft.Office.Interop.Excel.Application.DisplayDocumentActionTaskPane = false;
I'm trying to export an excel sheet into xml spread sheet 2003 in order to apply some xsl on the result xml file ,
so , i have tried to save the sheet i'm working on using XlFormat enum as follows :
Excel.Application app = new Excel.Application();
Excel.Workbook workbook;
Excel.Worksheet NwSheet;
workbook = app.Workbooks.Open(#"C:\file.xlsx",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1);
string outfile = #"c:\temp.xml";
NwSheet.SaveAs(outfile, Excel.XlFileFormat.xlXMLSpreadsheet, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
This code generated an xml file with the following problems :
1-cells of type date are generated as :
2011-10-10T00:00:00.000 , i want it to be 10/10/2011 exactly as it was in the excel sheet so how can i access to these cell's types in order to change them ??
2-numbers as 8.2 were generated as 8.1999999999999993 why did that happen and how can i get it just as is it in the excel sheet
i guess both are faces of the same problem , i just need the data as it appears in the excel sheet.
I have a ASP.NET Web App which is copying a Report to an Excel Sheet by creating an HTML table and copying the contents.
I want to fit the Excel report into 1 page before firing the print option. This needs to be done programmatically while I'm generating the Excel workbook.
Following is the code that I used to open an Excel workbook and print it with custom printer settings:
Dim xl As New Excel.Application
xl.DisplayAlerts = False
xl.Workbooks.Open("<FilePath>", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, _
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)
Dim sheet As Excel.Worksheet
Dim ws
Try
For Each ws In xl.ActiveWorkbook.Worksheets
ws.Select(Type.Missing)
With ws.PageSetup
.PaperSize = Excel.XlPaperSize.xlPaperA4
.Orientation = Excel.XlPageOrientation.xlLandscape
.Zoom = 80
.BottomMargin = 0.25
.LeftMargin = 0.25
.RightMargin = 0.25
.TopMargin = 0.25
.FitToPagesWide = 1
End With
ws.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)
Next
Catch exp As Exception
MsgBox("Unable to setup printing properties for the sheet." & Chr(13) & "Check if you have printer installed on your machine.", MsgBoxStyle.OKOnly)
Finally
xl.Workbooks.Close()
xl.Quit()
While (System.Runtime.InteropServices.Marshal.ReleaseComObject(xl) > 0)
''do nothing
End While
xl = Nothing
End Try