【发布时间】:2017-12-19 00:46:55
【问题描述】:
我的 c# 应用程序需要帮助,我的应用程序基本上完成了,只需要稍作调整就应该完成。
我的程序有很多功能。但我需要帮助的是以下内容:
我的程序将让用户首先创建一个 excel 文件,我有三个按钮第一个按钮打开,它将打开用户创建的创建文件,用户将文件保存在任何位置,但是当按钮打开时需要找到该文件到用户保存文件的位置。如果我手动放置文件特定位置的位置,现在按钮将起作用。但我的应用程序将被许多用户使用。每个用户将自己的文件保存在任何目录位置。我还有一个按钮,可以将数据保存到 excel 文件并关闭它,但只要打开的文件正常工作,它们就可以正常工作。
这部分代码将创建并保存到所需的用户位置。然后打开按钮功能需要自动从计算机目录中找到刚刚创建的最近文件。正如我之前所说,如果我放置特定位置,则打开按钮有效,但我不想放置文件的特定位置,因为用户将选择 Excel 文件的该位置。
private void tlpMenuItem_SaveAs_Click(object sender, EventArgs e)
{
string sd;
svFileDialog_SaveButton.ShowDialog();
//saveFileDialog1.InitialDirectory = "c:";
svFileDialog_SaveButton.Filter = "Excel File|*.xlsx|All Files|*.*";
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Application.Workbooks.Add(Type.Missing);
ExcelApp.Columns.ColumnWidth = 20;
sd = svFileDialog_SaveButton.FileName;
ExcelApp.ActiveWorkbook.SaveCopyAs(sd + ".xlsx");
ExcelApp.ActiveWorkbook.Saved = true;
ExcelApp.Quit();
MessageBox.Show("Excel file created");
}
private void OpenFile()
{
string findFile = "";
xlexcel = new Excel.Application();
xlexcel.Visible = true;
// Open a File
xlWorkBook = xlexcel.Workbooks.Open("C:\MyFile.xlsx", 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);
xlWorkSheet.Cells[1, 1] = "Username";
xlWorkSheet.Cells[1, 2] = "Password";
xlWorkSheet.Cells[1, 3] = "Warehouse Location";
xlWorkSheet.Cells[1, 4] = "Date";
}
这是我创建文件的完整代码,打开、保存数据和关闭excel文件
private void tlpMenuItem_SaveAs_Click(object sender, EventArgs e)
{
string sd;
svFileDialog_SaveButton.ShowDialog();
//saveFileDialog1.InitialDirectory = "c:";
svFileDialog_SaveButton.Filter = "Excel File|*.xlsx|All Files|*.*";
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Application.Workbooks.Add(Type.Missing);
ExcelApp.Columns.ColumnWidth = 20;
sd = svFileDialog_SaveButton.FileName;
ExcelApp.ActiveWorkbook.SaveCopyAs(sd + ".xlsx");
ExcelApp.ActiveWorkbook.Saved = true;
ExcelApp.Quit();
MessageBox.Show("Excel file created");
}
private void OpenFile()
{
string findFile = "";
xlexcel = new Excel.Application();
xlexcel.Visible = true;
// Open a File
xlWorkBook = xlexcel.Workbooks.Open("C:\MyFile.xlsx", 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);
xlWorkSheet.Cells[1, 1] = "Username";
xlWorkSheet.Cells[1, 2] = "Password";
xlWorkSheet.Cells[1, 3] = "Warehouse Location";
xlWorkSheet.Cells[1, 4] = "Date";
}
private void SaveDataToAFile()
{
int _lastRow = xlWorkSheet.Range["A" + xlWorkSheet.Rows.Count].End[Excel.XlDirection.xlUp].Row + 1;
xlWorkSheet.Cells[_lastRow, 1] = txt_Username.Text;
xlWorkSheet.Cells[_lastRow, 2] = txt_Password.Text;
xlWorkSheet.Cells[_lastRow, 3] = cmb_DatabaseSelection.SelectedIndex.ToString();
xlWorkSheet.Cells[_lastRow, 4] = DateTime.Now;
}
private void CloseFile()
{
xlWorkBook.Close(true, misValue, misValue);
xlexcel.Quit();
ReleaseObject(xlWorkSheet);
ReleaseObject(xlWorkBook);
ReleaseObject(xlexcel);
}
private void ReleaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
【问题讨论】:
-
不明白你的问题。
-
听起来你想提示用户选择带有
OpenFileDialog和SaveFileDialog的文件,对吗? -
嗯...我猜不是,因为您的代码已经使用了它们。好吧,我也不知道你在问什么。
-
用户将一个excel文件保存到他们计算机的任何位置,他们将命名文件然后保存,然后我的打开按钮将在他们单击打开文件按钮后找到该文件的位置。 .是的,以保存我正在使用 saveFileDialog 的文件。我的程序是否可以找到用户创建的文件的位置?
-
保存文件时,您可以将其位置保存在您的变量之一中。简单来说,将您的
sd变量设为实例变量(具有正确的名称)。然后你可以在你的OpenFile方法中引用这个。