Как открыть файл Excel на С#?
Я пытаюсь преобразовать код VBA в С#. Я новичок в С#. В настоящее время я пытаюсь открыть файл Excel из папки, и если он не существует, создайте его. Я пытаюсь сделать что-то вроде следующего. Как я могу заставить его работать?
Excel.Application objexcel;
Excel.Workbook wbexcel;
bool wbexists;
Excel.Worksheet objsht;
Excel.Range objrange;
objexcel = new Excel.Application();
if (Directory("C:\\csharp\\error report1.xls") = "")
{
wbexcel.NewSheet();
}
else
{
wbexcel.Open("C:\\csharp\\error report1.xls");
objsht = ("sheet1");
}
objsht.Activate();
Ответы
Ответ 1
Вам необходимо установить Microsoft Visual Studio Tools для Office (VSTO).
VSTO можно выбрать в установщике Visual Studio в разделе "Рабочие нагрузки"> "Web & Облако> Разработка Office/SharePoint.
После этого создайте общий проект .NET и добавьте ссылку на Microsoft.Office.Interop.Excel
в диалоговом окне "Добавить ссылку...> Сборки".
Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);
Missing.Value
- это специальная структура отражения для замены ненужных параметров
В более новых версиях требуемая ссылка на сборку называется Microsoft Excel 16.0 Object Library
. Если у вас не установлена последняя версия, возможно, у вас установлена Microsoft Excel 15.0 Object Library
или более старая версия, но это тот же процесс, который нужно включить.
![enter image description here]()
Ответ 2
FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
//file doesn't exist
}
Ответ 3
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);
}
}
Ответ 4
открыть файл Excel
System.Diagnostics.Process.Start(@"c:\document.xls");
Ответ 5
вы должны открыться так:
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
Ruden
Ответ 6
Импорт
using Excel= Microsoft.Office.Interop.Excel;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
Вот код для открытия листа excel с использованием С#.
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 с помощью С# https://www.youtube.com/watch?v=O5Dnv0tfGv4
Ответ 7
Для открытия файла попробуйте следующее:
objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls",
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing,missing, missing);
Вы должны предоставить эти глупые "отсутствующие" аргументы. Если бы вы писали один и тот же код в VB.Net, вам бы не нужны были, но вы не можете избежать их на С#.
Ответ 8
Вам легче помочь, если вы скажете, что неправильно, или что не удается, когда вы его запускаете.
Но с быстрым взглядом вы путаете несколько вещей.
Следующие действия не работают из-за нескольких проблем.
if (Directory("C:\\csharp\\error report1.xls") = "")
То, что вы пытаетесь сделать, это создать новый объект Directory, который должен указывать на файл, а затем проверить, имеются ли какие-либо ошибки.
На самом деле вы пытаетесь вызвать функцию с именем Directory(), а затем назначьте строку для результата. Это не сработает с 1/у вас нет функции с именем Directory (строка 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 должен предоставить вам.
Ответ 9
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);
Ответ 10
Это коммерческое приложение или какое-то программное обеспечение для хобби/с открытым исходным кодом?
Я спрашиваю об этом, потому что по моему опыту все бесплатные альтернативы обработки .NET.NET имеют серьезные проблемы по разным причинам. Для хобби, я обычно заканчиваю переносом jExcelApi с Java на С# и используя его.
Но если это коммерческое приложение, вам будет лучше купить библиотеку сторонних разработчиков, например Aspose.Cells. Поверьте мне, это полностью стоит того, поскольку это экономит много времени и времени, не является бесплатным.
Ответ 11
Для редактирования файлов Excel из приложения С# я недавно начал использовать NPOI.
Я очень доволен этим.
Ответ 12
Код:
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());
}
}
}
}