【问题标题】:Can't give a correct path to a function in C#无法为 C# 中的函数提供正确的路径
【发布时间】:2023-03-15 01:14:01
【问题描述】:

我正在尝试使用 C# 将 PDF 文件转换为 Excel 文件。 当我写这个时:

foreach (var file in d.GetFiles("*.pdf"))
{
    var f = new SautinSoft.PdfFocus { Serial = "xxxxxxxxxxxxx" };

    f.OpenPdf(file.OpenRead());

    if (f.PageCount > 0)
        f.ToExcel(@"d:\File.xls");
}

它有效,但是当我写这个时:

foreach (var file in d.GetFiles("*.pdf"))
{
    var f = new SautinSoft.PdfFocus { Serial = "xxxxxxxxxxxxx" };

    f.OpenPdf(file.OpenRead());

    if (f.PageCount > 0)
        f.ToExcel(@"d:" + file.FullName + "xls");
}

它不起作用。如何更改此行以使其正常工作?

f.ToExcel(@"d:" + file.FullName + ".xls");

【问题讨论】:

  • 你在d: 之后缺少'\''.' 你的路径应该是f.ToExcel(@"d:\" + file.FullName + ".xls");
  • 这是调试器非常有用的地方。在file.FullName 行上打断点,看看实际值是多少,

标签: c# excel pdf


【解决方案1】:

file.Fullname 已包含完整路径。因此省略开头的“d:”。

【讨论】:

  • 我尝试了f.ToExcel(@" + file.FullName);f.ToExcel(file.FullName);,但都没有生成 xls 文件。
  • 在您的代码中 file 是一个 .PDF 文件,但您硬编码了一个“.XLS”文件...?
【解决方案2】:

FullName 返回全名包括扩展名。因此,在第一个实例中,您尝试编写扩展名错误的 Excel 文件。虽然这适用于 Unix 系统,但 Windows 喜欢扩展是正确的。通过硬编码“.xls”,您将文件名更改为:

@"d:\Path\File.pdf.xls"

这是正确的,但令人困惑。

您需要从文件中删除“.pdf”并将其替换为“.xls”。最简单的方法可能是:

string filename = file.FullName.Replace(".pdf", ".xls");
f.ToExcel(filename);

因为Fullname 已经包含前导驱动器号。

这会将 所有 次出现的“.pdf”更改为“.xls”,因此如果该字符串出现在路径中的其他位置,它也会在那里更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2021-10-02
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多