将数据从 c# 保存到 Excel 崩溃

Posted

技术标签:

【中文标题】将数据从 c# 保存到 Excel 崩溃【英文标题】:saving data from c# to Excel crashes 【发布时间】:2021-07-22 12:04:34 【问题描述】:

我从事一个项目,我想将一些数据保存在 Excel 工作表中,

这是我的代码:

private void myButton11_Click(object sender, EventArgs e)

    Microsoft.Office.Interop.Excel.Application excel;
    Microsoft.Office.Interop.Excel.Workbook excelworkbook;
    Microsoft.Office.Interop.Excel.Worksheet excelsheet;

    excel = new Microsoft.Office.Interop.Excel.Application();
    excel.Visible = false;
    excel.DisplayAlerts = false;

    excelworkbook = excel.Workbooks.Add(Type.Missing);

    excelsheet = (Microsoft.Office.Interop.Excel.Worksheet)excelworkbook.ActiveSheet;
    excelsheet.Name = "dataToExcel";
    // fill in data
    excelsheet.Cells[1, 1] = "test";
    excelsheet.Cells[3, 3] = "test2";

    // save excel
    excelworkbook.SaveAs(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//dataToExcel.xls",
        Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
        true, true, 1, 10, false);

问题是执行它时崩溃并显示以下错误消息:

System.Runtime.InteropServices.COMException
  HResult=0x800A03EC
  Message=Coudn't access file. Please try thoses options :

• Make sure the file exist. 
• Make sure the file is not in read only.
• Make sure file path isn't containing thoses characteres:  <  >  ?  [  ]  :  | or  *
• Make sure the file path and names do not take more than 218 caracteres.

C:\Users\corentin.boudaud\source\repos\FabLoop_project_V0.0.0\FabLoop_project_V0.0.0\Program.cs :ligne 20

崩溃发生在“SaveAs”上,我正在写入的文件在我的文档中(公开,可写入)

知道问题出在哪里吗?

谢谢

【问题讨论】:

推荐使用nuget.org/packages/EPPlus或nuget.org/packages/ClosedXML 真的是说“那些选项”和“那些字符”还是你自己翻译了错误信息? Message=我们无法访问该文件。尝试以下选项之一: - 确保指定的文件夹存在。 - 确保包含该文件的文件夹未处于只读模式。 - 确保文件名和文件夹路径不包含以下任何字符: ? [ ] : |或 * - 确保文件名和文件夹路径不超过 218 个字符。 以下内容可能会有所帮助:***.com/questions/65045576/… 该代码适用于我,请检查您的路径并确保文件路径和名称不超过 218 个字符。此外,您可以考虑将其保存到其他路径并再次测试。 【参考方案1】:

您可以轻松地将其保存为 .csv 文件。 CSV也是一个表格,如果你打开它,它会在excel中打开。

您可以使用 System.IO 做到这一点

这是 excel 中的 csv 文件:

这是notepad++中的一个csv文件

【讨论】:

我正在寻找人类可以阅读的东西...... csv 可能是这个问题 不,当您在 exel 中打开 csv 时,它是一个普通表 我添加了图片【参考方案2】:

我发现了问题,

使用excelworkbook.SaveAs()时,路径需要使用'\'来设置路径,而不是'/'

然后我可以根据需要保存文件,.csv .xls 或 .xlsx

【讨论】:

以上是关于将数据从 c# 保存到 Excel 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Excel 崩溃,VBA 用户窗体无法保存

尝试从响应 Swift Alamofire 将数据保存到核心数据时崩溃

从 c# 接收到 localhost 的数据未显示在 localhost 网页中 - nodemon 应用程序崩溃

从后台线程保存数据时核心数据崩溃

无法在 Excel 崩溃的情况下从工作表中删除命令按钮

如何确保在崩溃 c# 时保存应用程序状态