Como abrir um arquivo Excel em C#?
estou a tentar converter algum código VBA para C#. Sou novo em C#. Atualmente estou tentando abrir um arquivo Excel a partir de uma pasta e se ele não existe, em seguida, criá-lo. Estou a tentar algo como o seguinte. Como posso fazê-lo funcionar?
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();
12 answers
Você precisa ter instalado ferramentas Microsoft Visual Studio para Escritório.
Depois disso, criar um projecto comum. NET e adicionar a referência ao objecto COM Microsoft.Office.Interop.Excel.dll
através de ' Adicionar Referência..' dialogo.
Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);
Missing.Value
é uma estrutura de reflexão especial para a substituição desnecessária de parâmetros
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);
}
}
Abrir o ficheiro Excel
System.Diagnostics.Process.Start(@"c:\document.xls");
Devias abrir assim
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);
Fonte : http://csharp.net-informations.com/excel/csharp-open-excel.htm
Ruden
Importações
using Excel= Microsoft.Office.Interop.Excel;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
Aqui está o código para abrir uma folha do excel usando 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();
Aqui está um vídeo mate sobre como abrir uma planilha do excel usando C# https://www.youtube.com/watch?v=O5Dnv0tfGv4
Para abrir um ficheiro, tente isto:
objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls",
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing,missing, missing);
Tens de apresentar esses argumentos idiotas de "falta". Se você estivesse escrevendo o mesmo código em VB.Net não terias precisado deles, mas não os podes evitar Em C#.
if (Directory("C:\\csharp\\error report1.xls") = "")
O que você está tentando fazer é criar um novo objeto de diretório que deve apontar para um arquivo e, em seguida, verificar se houve algum erro.
O que você está realmente a fazer é tentar chamar uma função chamada Directory () e depois atribuir um texto para resultado. Isso não vai funcionar Desde 1 / Você não tem uma função chamada diretório (string str) e você não pode atribuir ao resultado de uma função (você só pode atribuir um valor a uma variável).
O que deve fazer (pelo menos para esta linha) é o seguinte
FileInfo fi = new FileInfo("C:\\csharp\\error report1.xls");
if(!fi.Exists)
{
// Create the xl file here
}
else
{
// Open file here
}
Quanto à razão pela qual o código Excel não funciona, você tem que verificar a documentação para a Biblioteca Excel que o google deve ser capaz de fornecer para você.
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);
Isto é uma aplicação comercial ou algum software de hobby / código aberto?
Estou a perguntar isto porque, pela minha experiência, Todas as alternativas de manipulação do Excel free. Net têm problemas graves, por diferentes razões. Para coisas de hobbyist, eu geralmente acaba portando jExcelApi de Java para C# e usá-lo.
Mas se isto é uma aplicação comercial, estarias melhor se comprasses uma biblioteca de terceiros, como Aspose.Células. Acredita em mim, diz-se como se diz. poupa muito tempo e o tempo não é de graça.
Código :
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());
}
}
}
}