【问题标题】:Can we create Excel File using File.Create?我们可以使用 File.Create 创建 Excel 文件吗?
【发布时间】:2016-05-16 12:15:19
【问题描述】:

我想在 c# 中的特定位置和特定名称处创建一个 Excel 文件。 我们可以为此使用File.Create("Filename.xlsx") 吗?

这会创建文件,但是当我们尝试打开它时;它说扩展中有问题。

我尝试了另一种方法,使用 excelApp。但这样,它会在“~Documents\Sheet1.xlsx”处创建默认的 Excel 文件。所以在那种情况下我不能指定位置和文件名。

Excel.Application excelApp = new Excel.Application();
Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(1);

问题类似于-Specify Path and filename while creating excel

由于我无法发表评论,我不得不再次询问。 我已经尝试了链接中提供的答案。

我的代码:

    Excel.Application excelApp = new Excel.Application();
    object missing = System.Reflection.Missing.Value;
    Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(missing); 

//....
        Fill excelWorkbook after creating worksheets
....//

       excelWorkBook.Save();

现在,根据建议,我使用的是 SaveAs,而不是 Save。

 excelWorkBook.SaveAs(@"E:\\MyExcelBook\\abcd.xlsx",
                        Excel.XlFileFormat.xlOpenXMLWorkbook, missing, missing,
                        false, false, Excel.XlSaveAsAccessMode.xlNoChange,
                        missing, missing, missing, missing, missing);

它给了我错误: *无法访问该文件。请尝试以下方法之一:\n\n• 确保指定的文件夹存在。 \n• 确保包含该文件的文件夹不是只读的。\n• 确保文件名不包含以下任何字符: ? []:|或\n• 确保文件/路径名不超过 218 个字符。

请告诉我我哪里做错了?

【问题讨论】:

  • 类似问题的答案没有说明您需要做什么吗?使用excelWorkBook.SaveAs("c:\path-to-wherever", ...
  • 保存一个扩展名为 .xlsx 的“空”文件并不意味着 excel 能够读取这样的文件。您可以使用 OpenXML、ClosedXML(我的首选)、互操作(很糟糕),而且我敢肯定还有许多其他创建 excel 文档的方法
  • 这个链接应该对你有帮助Using COM Interop.

标签: c# asp.net excel


【解决方案1】:

仅仅因为您保存扩展名为 .xlsx 的“空”文件并不意味着 excel 能够读取这样的文件。您可以使用 OpenXML、ClosedXML(我的首选)、互操作(很糟糕),而且我相信还有许多其他创建 excel 文档的方法

File.Create(...) 与在文件资源管理器中单击鼠标右键,选择新的文本文档并将其从“New Text Document.txt”重命名为“New Text Document.xlsx”没有太大区别。是的,扩展名是 excel,但 excel 无法读取声明它是 excel 文件的空文件。

您可以使用任何可用的库来创建 excel 文件:

  1. ClosedXML
  2. OpenXML
  3. Interop

等等。默认情况下,这些库中的大多数“Save”方法或“SaveAs”方法(可能)会在工作目录中创建文件,但您也可以指定一个目录来创建它们。

正如链接问题中的答案所示:

workbook.SaveAs(@"c:\documents\book1.xlsx",
        Excel.XlFileFormat.xlOpenXMLWorkbook, missing, missing,
        false, false, Excel.XlSaveAsAccessMode.xlNoChange,
        missing, missing, missing, missing, missing);

【讨论】:

  • 我已经更新了这个问题,因为我已经尝试了你的建议。除非我能找到一些东西,否则将对其进行返工。
  • 你不需要 both @ 和转义 `\\` - 一个或另一个。
  • 哦...没注意到。它现在工作。我在想可能存在一些语法错误。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多