如何在C#中打开Excel文件?
我正在尝试将一些代码转换为C#。我是C#的新手。目前,我正在尝试从文件夹中打开Excel文件,如果它不存在,则创建它。我正在尝试下面的方法。我怎样才能让它工作如何在C#中打开Excel文件?,c#,.net,excel,vsto,C#,.net,Excel,Vsto,我正在尝试将一些代码转换为C#。我是C#的新手。目前,我正在尝试从文件夹中打开Excel文件,如果它不存在,则创建它。我正在尝试下面的方法。我怎样才能让它工作 Excel.Application objexcel; Excel.Workbook wbexcel; bool wbexists; Excel.Worksheet objsht; Excel.Range objrange; objexcel = new Excel.Application(); if (Directory("C:\\c
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();
要打开文件,请尝试以下操作:
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代码不起作用的原因,您必须检查google应该能够为您提供的Excel库的文档。您需要安装Microsoft Visual Studio Tools for Office(VSTO) 可以在Visual Studio安装程序中的“工作负载>Web和云>Office/SharePoint开发”下选择VSTO 之后,创建一个通用的.NET项目,并通过“添加引用…”添加对Microsoft.Office.Interop.Excel的引用程序集对话框
Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);
缺少。Value
是一个特殊的反射结构,用于不必要的参数替换
在较新版本中,所需的程序集引用称为
Microsoft Excel 16.0对象库
。如果未安装最新版本,则可能安装了Microsoft Excel 15.0对象库
,或旧版本,但包含的过程相同
这是一个商业应用程序还是一些爱好者/开源软件 我这样问是因为根据我的经验,所有免费的.NET Excel处理方案都有严重的问题,原因各不相同。对于业余爱好者来说,我通常会将jExcelApi从Java移植到C#并使用它
但如果这是一个商业应用程序,您最好购买第三方库,如。相信我,这完全是值得的,因为它节省了很多时间,而且时间不是免费的。对于从C应用程序中编辑Excel文件,我最近开始使用。
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);
我很满意。你应该这样打开
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);
资料来源:
鲁登代码:
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());
}
}
}
}
进口
using Excel= Microsoft.Office.Interop.Excel;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
下面是使用C#打开excel工作表的代码
下面是一段视频,介绍如何使用C#打开excel文件打开excel工作表
System.Diagnostics.Process.Start(@"c:\document.xls");
那有什么问题?请描述它,因为直接查看比自己创建一个空白项目然后复制并粘贴代码更容易。对于开始,目录部分抛出错误'system.io.directory是一种类型,但像变量一样使用“这会停止该错误:if(!directory.Exists(@“C:\csharp\error report.xls”))if(directory(”C:\\csharp\\error report1.xls“=”)应为if(!File.Exists(“C:\\csharp\\error report1.xls”))除非您使用的是VS2010:)哦,而且您希望缺少。Value
private object\u Value=Missing.Value;
将缺少的替换为_Value。这对我很有用。@Saravanan:请看:object ReadOnly
。我想您需要传递true
:请看我的问题……当我添加时,我得到错误,因为CS0104:“DataTable”是一个am“System.Data.DataTable”和“Microsoft.Office.Interop.Excel.DataTable”之间的模糊引用
@coder:使用System.Data删除;
或使用“使用DataTable=Microsoft.Office.Interop.Excel.DataTable
@abatishchev:当我使用System.Data删除时代码>我为另一组代码使用的数据集
获取命名空间错误。如果没有excelApp,excel将无法显示。Visible=true。谢谢2011年答案的复制如果有密码,如何启动Excel文件?对我来说很有用。当然比2009年的答案更简单,因为不需要额外的工具,而且一行程序是必不可少的。太好了,正是我想要的,谢谢!我简化了它,只将fi作为System.Diagnostics.Process.start(fi.ToString())传递到start中代码>
using Excel= Microsoft.Office.Interop.Excel;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
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();
System.Diagnostics.Process.Start(@"c:\document.xls");