我正在尝试将一些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:\\csharp\\error report1.xls") = "")
{
wbexcel.NewSheet();
}
else
{
wbexcel.Open("C:\\csharp\\error report1.xls");
objsht = ("sheet1");
}
objsht.Activate();
答案 0 :(得分:72)
您需要安装Microsoft Visual Studio Tools for Office(VSTO)。
可以在Workloads>下的Visual Studio安装程序中选择VSTO。 Web&云> Office / SharePoint开发。
之后创建常见的.NET项目,并通过'Add Reference ...>添加对Microsoft.Office.Interop.Excel
的引用。装配体的对话框。
Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);
Missing.Value
是一个特殊的反射结构,用于不必要的参数替换
答案 1 :(得分:36)
FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
//file doesn't exist
}
答案 2 :(得分:8)
打开Excel文件
System.Diagnostics.Process.Start(@"c:\document.xls");
答案 3 :(得分:7)
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 :(得分:3)
你应该像这样打开
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
答案 5 :(得分:3)
进口
using Excel= Microsoft.Office.Interop.Excel;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
以下是使用C#打开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();
以下是有关如何使用C#https://www.youtube.com/watch?v=O5Dnv0tfGv4
打开Excel工作表的视频配合答案 6 :(得分:2)
要打开文件,请尝试以下操作:
objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls",
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing,missing, missing);
你必须提供那些愚蠢的“缺失”参数。如果您在VB.Net中编写相同的代码,则不需要它们,但是您无法在C#中避免使用它们。
答案 7 :(得分:2)
如果您说出错误,或者在运行时失败了,那么帮助您会更容易。
但是从快速浏览一下,你就混淆了一些事情。
由于存在一些问题,以下情况不起作用。
if (Directory("C:\\csharp\\error report1.xls") = "")
您要做的是创建一个新的Directory对象,该对象应该指向一个文件,然后检查是否有任何错误。
您实际在做的是尝试调用名为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库的文档。
答案 8 :(得分:2)
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);
答案 9 :(得分:1)
这是商业应用程序还是一些业余爱好者/开源软件?
我问这个是因为根据我的经验,所有免费的.NET Excel处理方案都存在严重问题,原因各不相同。对于业余爱好者而言,我通常最终将jExcelApi从Java移植到C#并使用它。
但如果这是商业应用程序,那么购买第三方库(例如Aspose.Cells)会更好。相信我,它完全值得,因为它节省了大量的时间和时间是不自由的。
答案 10 :(得分:1)
为了在C#应用程序中编辑Excel文件,我最近开始使用NPOI。 我对它非常满意。
答案 11 :(得分: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());
}
}
}
}