C# 如何打开 excel 文件(如果存在),如果不存在,请从 WinForm 创建 Excel 文件
本文关键字:如果 文件 不存在 如果不 Excel 请从 创建 WinForm 存在 何打开 excel | 更新日期: 2023-09-27 18:34:23
我正在制作一个处理Excel文件的程序。我需要它来尝试打开现有的 Excel 文件,或者创建一个新文件(如果不存在),用于读取和写入选项。而且我必须在不使用 OleDB 的情况下执行此操作。所以问题是,当我单击按钮时,它会尝试创建一个新的 Excel 文件,即使我已经在目录中有该文件。关于如何解决这个问题的任何想法?所有用户输入都必须从WinForm完成。这是我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace test2
{
public partial class Form1 : Form
{
Microsoft.Office.Interop.Excel.Application oXL;
Microsoft.Office.Interop.Excel._Workbook oWB;
Microsoft.Office.Interop.Excel._Worksheet oSheet;
Microsoft.Office.Interop.Excel.Range oRng;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
FileInfo fi = new FileInfo(@"C:'Users'User'Desktop'data.xls");
if (!fi.Exists)
{
oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = true;
oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(System.Reflection.Missing.Value));
oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
oSheet.Cells[1, 1] = "First Name";
oSheet.Cells[1, 2] = "Last Name";
oSheet.Cells[1, 3] = "Full Name";
oSheet.Cells[1, 4] = "Age";
oSheet.get_Range("A1", "D1").Font.Bold = true;
oSheet.get_Range("A1", "D1").VerticalAlignment =
Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
}
else
{
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
string myPath = (@"C:'Users'User'Desktop'data.xlsx");
excelApp.Workbooks.Open(myPath);
excelApp.Visible = true;
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
另外,如果有人能给我一个代码示例来保存和关闭Excel文件而无需与用户交互,我将不胜感激。用户将输入数据,然后单击按钮,它将自动保存并关闭Excel文档,而不会向用户显示任何弹出窗口。
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
string myPath = (@"C:'Users'User'Desktop'data.xlsx");
excelApp.Workbooks.Open(myPath);
excelApp.Visible = false;
int rowIndex = 2; int colIndex = 2;
excelApp.Cells[rowIndex, colIndex] = textBox1.Text;
//how do I save workbook?
//how do I colose Workbook?
提前谢谢。
首先,如果你碰巧有一个像2010这样的Visual Studio新版本,我肯定会推荐使用Visual Studio Tools for Office(VSTO)。您可以在该框架内创建 Excel 项目并加快开发时间。如果您想了解更多信息,请查看此处:http://msdn.microsoft.com/en-US/office/hh133430.aspx
若要回答有关从 WinForm 应用程序保存 Excel 工作簿的问题,可以执行以下操作:
excelApp.ScreenUpdating = false;
excelApp.DisplayAlerts = false;
excelApp.ActiveWorkbook.Save();
excelApp.ScreenUpdating = true;
excelApp.DisplayAlerts = true;
希望这有所帮助,但让我们知道那里是否还有其他东西。
excelWorkbook.SaveAs(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
excelWorkbook.Close();
excelApp.Quit();