我需要帮助我的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();
}
}
答案 0 :(得分:0)
我的建议是创建一个变量来保存用户保存时的文件路径。您可以使用以下方式执行此操作:
String filepath; //global variable
Stream stream;
SaveFileDialog sf = new SaveFileDialog();
if(sf.ShowDialog() == true)
{
if((stream = sf.OpenFile()) != null)
{
filepath = sf.FileName;
//Do save work
}
}