gpt4 book ai didi

c# - EPPlus 库,另存为

转载 作者:行者123 更新时间:2023-11-30 23:20:10 28 4
gpt4 key购买 nike

使用 EPPlus,很容易将文档保存到预定义的路径,但我每次都需要保存到不同的路径,所以我需要 EPPlus 来显示标准的保存对话框。

我的代码可以从数据表创建一个 Excel 文件,对其进行一些格式化,并将其保存在指定位置:

            DirectoryInfo outputDir = new DirectoryInfo(@"C:\Users\user001\Downloads");
FileInfo newFile = new FileInfo(outputDir.FullName + @"\Crit.xlsx");

if (newFile.Exists) {newFile.Delete();}

using (ExcelPackage pck = new ExcelPackage(newFile))
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Crit");
ws.Cells["A1"].LoadFromDataTable(dtCrit, true);
ws.Cells.AutoFitColumns(0);
ws.Cells["A1:Z1"].Style.Border.Top.Style = ExcelBorderStyle.Thin;
ws.Cells["A1:Z1"].Style.Font.Bold = true;
pck.Save();
}

如何显示对话框以手动选择目标文件夹?我试过 pck.SaveAs,但我不能让它工作,而且没有太多关于这个的信息......

更新:该应用程序在从项目内部或服务器执行时工作。如果使用快捷方式执行或将 exe 复制/粘贴到我的桌面,则会崩溃。

string mydocpath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

try {
DirectoryInfo outputDir = new DirectoryInfo(mydocpath);
FileInfo newFile = new FileInfo(outputDir.FullName + @"\Requerimientos_" + DateTime.Now.ToString("dd-MM-yyyy_hh-mm") + ".xlsx");

if (newFile.Exists) { newFile.Delete(); }

using (ExcelPackage pck = new ExcelPackage(newFile))
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Requerimientos");
ws.Cells["A1"].LoadFromDataTable(dtReque, true);
ws.Cells.AutoFitColumns(0);
ws.Cells["A1:Z1"].Style.Border.Top.Style = ExcelBorderStyle.Thin;
ws.Cells["A1:Z1"].Style.Font.Bold = true;

var dlg = new SaveFileDialog { FileName = "Requerimientos_" + DateTime.Now.ToString("dd-MM-yyyy_hh-mm"), DefaultExt = ".xlsx", Filter = "Excel Sheet (.xlsx)|*.xlsx", InitialDirectory = mydocpath };
var result = dlg.ShowDialog();
if (result == true)
{
using (var stream = dlg.OpenFile())
{
pck.SaveAs(stream);
OpenDialog("File Created", "Export");
}
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}

最佳答案

WPF 通过 Microsoft.Win32 命名空间提供标准文件对话框。您可以使用 SaveFileDialog显示对话框并选择或创建要保存到的文件。

一旦您选择了一个文件,您就可以从路径创建一个 FileInfo 并将其传递给 SaveAs,例如:

// Configure save file dialog box
var dlg = new Microsoft.Win32.SaveFileDialog
{
FileName = "NewSheet", // Default file name
DefaultExt = ".xlsx", // Default file extension
Filter = "Excel Sheet (.xlsx)|*.xlsx" // Filter files by extension
}

// Show save file dialog box
var result = dlg.ShowDialog();

// Process save file dialog box results
if (result == true)
{
// Save document
string filename = new FileInfo(dlg.FileName);
package.SaveAs(newFile);
}

或者您可以使用 SaveFileDialog.OpenStream让对话框本身创建一个流以保存到:

if (result == true)
{
// Save document
using(var stream=dlg.OpenStream())
{
package.SaveAs(stream);
}
}

关于c# - EPPlus 库,另存为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39870552/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com