![](/img/trans.png)
[英]VTSO: Sometimes users are unable to open Excel file generated from C# Winform App
[英]C# how to Open excel file if it exists, create excel file if it doesn't, from WinForm?
我正在制作一個適用於Excel文件的程序。 我需要它來嘗試打開一個現有的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?
提前致謝。
首先,如果您碰巧擁有Visual Studio的最新版本(例如2010),我肯定會建議使用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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.