Как открыть файл Excel в C#?
Я пытаюсь преобразовать некоторые VBA код на C#. Я новичок в C#. В настоящее время я пытаюсь открыть файл Excel из папки, и если он не существует, то создайте его. Я пытаюсь что-то вроде следующего. Как я могу заставить его работать?
Excel.Application objexcel;
Excel.Workbook wbexcel;
bool wbexists;
Excel.Worksheet objsht;
Excel.Range objrange;
objexcel = new Excel.Application();
if (Directory("C:csharperror report1.xls") = "")
{
wbexcel.NewSheet();
}
else
{
wbexcel.Open("C:csharperror report1.xls");
objsht = ("sheet1");
}
objsht.Activate();
12 ответов:
вам необходимо установить Microsoft Visual Studio Tools for Office.
после этого создайте общий проект .NET и добавьте ссылку на COM-объект
Microsoft.Office.Interop.Excel.dllчерез "добавить ссылку"..' диалог.Application excel = new Application(); Workbook wb = excel.Workbooks.Open(path);
Missing.Valueэто специальная структура отражения для замены ненужных параметров
FileInfo fi = new FileInfo("C:\test\report.xlsx"); if(fi.Exists) { System.Diagnostics.Process.Start(@"C:\test\report.xlsx"); } else { //file doesn't exist }
private void btnChoose2_Click(object sender, EventArgs e) { OpenFileDialog openfileDialog1 = new OpenFileDialog(); if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.btnChoose2.Text = openfileDialog1.FileName; String filename = DialogResult.ToString(); var excelApp = new Excel.Application(); excelApp.Visible = true; excelApp.Workbooks.Open(btnChoose2.Text); } }
вы должны открыть такой
Excel.Application xlApp ; Excel.Workbook xlWorkBook ; Excel.Worksheet xlWorkSheet ; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);источник:http://csharp.net-informations.com/excel/csharp-open-excel.htm
Руден
импорт
using Excel= Microsoft.Office.Interop.Excel; using Microsoft.VisualStudio.Tools.Applications.Runtime;вот код для открытия листа excel с помощью C#.
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook wbv = excel.Workbooks.Open("C:\YourExcelSheet.xlsx"); Microsoft.Office.Interop.Excel.Worksheet wx = excel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet; wbv.Close(true, Type.Missing, Type.Missing); excel.Quit();вот видео-мат о том, как открыть лист excel с помощью C# https://www.youtube.com/watch?v=O5Dnv0tfGv4
чтобы открыть файл, попробуйте следующее:
objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,missing, missing);вы должны предоставить эти глупо выглядящие "отсутствующие" аргументы. Если вы писали тот же код в VB.Net вы бы не нуждались в них, но вы не можете избежать их в C#.
легче помочь вам, если вы говорите, что неправильно, или что не удается, когда вы запустите его.
но с первого взгляда вы перепутали несколько вещей.
следующее не работает из-за нескольких проблем.
if (Directory("C:\csharp\error report1.xls") = "")то, что вы пытаетесь сделать, это создать новый объект каталога, который должен указывать на файл, а затем проверить, если есть какие-либо ошибки.
то, что вы на самом деле делаете, пытается вызвать функцию с именем Directory () и затем назначьте строку для результата. Это не будет работать, так как 1/ у вас нет функции с именем Directory(string str), и вы не можете назначить результат из функции (вы можете только назначить значение переменной).
то, что вы должны сделать (по крайней мере для этой строки) является следующим
FileInfo fi = new FileInfo("C:\csharp\error report1.xls"); if(!fi.Exists) { // Create the xl file here } else { // Open file here }что касается того, почему код Excel не работает, вы должны проверить документацию для библиотеки Excel, которую google должен быть в состоянии предоставить для вас.
Microsoft.Office.Interop.Excel.Application excapp; excapp = new Microsoft.Office.Interop.Excel.Application(); object misval=System.Reflection.Missing.Value; Workbook wrkbuk = new Workbook(); Worksheet wrksht = new Worksheet(); wrkbuk = excapp.Workbooks._Open(@"C:\Users\...\..._template_v1.0.xlsx", misval, misval, misval, misval, misval, misval, misval, misval, misval, misval, misval, misval); wrksht = (Microsoft.Office.Interop.Excel.Worksheet)wrkbuk.Worksheets.get_Item(2);
это коммерческое приложение или какой-то любитель / программное обеспечение с открытым исходным кодом?
Я спрашиваю об этом, потому что, по моему опыту, все бесплатные альтернативы обработки .NET Excel имеют серьезные проблемы по разным причинам. Для любителей вещей я обычно портирую jExcelApi с Java на C# и использую его.
но если это коммерческое приложение, вам будет лучше приобрести стороннюю библиотеку, например Aspose.Клетки. Поверьте мне, это полностью стоит, так как это экономит много времени и не бесплатно.
код :
private void button1_Click(object sender, EventArgs e) { textBox1.Enabled=false; OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Excell File |*.xlsx;*,xlsx"; if (ofd.ShowDialog() == DialogResult.OK) { string extn = Path.GetExtension(ofd.FileName); if (extn.Equals(".xls") || extn.Equals(".xlsx")) { filename = ofd.FileName; if (filename != "") { try { string excelfilename = Path.GetFileName(filename); } catch (Exception ew) { MessageBox.Show("Errror:" + ew.ToString()); } } } }
для редактирования файлов Excel из приложения C#, я недавно начал использовать NPOI. Я очень доволен.
Comments