C# 如何修复文件格式和扩展名don';不匹配?
我在c#中创建了一个代码,用于创建和保存excel文件。代码可以成功创建和保存excel文件,但当我打开创建的excel文件时,它会显示一条警告消息,告知: “filename.xls”的文件格式和扩展名不匹配。文件可能已损坏或不安全。除非你相信它的来源,否则不要打开它。你还是要打开它吗 我正在使用以下代码:C# 如何修复文件格式和扩展名don';不匹配?,c#,excel,C#,Excel,我在c#中创建了一个代码,用于创建和保存excel文件。代码可以成功创建和保存excel文件,但当我打开创建的excel文件时,它会显示一条警告消息,告知: “filename.xls”的文件格式和扩展名不匹配。文件可能已损坏或不安全。除非你相信它的来源,否则不要打开它。你还是要打开它吗 我正在使用以下代码: private void button1_Click(object sender, EventArgs e) { saveFileDialogSummary.Fil
private void button1_Click(object sender, EventArgs e)
{
saveFileDialogSummary.Filter = "Excel Flie|*.xls";
saveFileDialogSummary.FilterIndex = 0;
saveFileDialogSummary.RestoreDirectory = true;
saveFileDialogSummary.CreatePrompt = true;
saveFileDialogSummary.Title = "Export Excel File To";
Excel.Application ExcelApp = new Excel.Application();
ExcelApp.Application.Workbooks.Add(Type.Missing);
ExcelApp.Columns.ColumnWidth = 30;
for (int i = 0; i < dataGridViewSummary.Rows.Count; i++)
{
DataGridViewRow row = dataGridViewSummary.Rows[i];
for (int j = 0; j < row.Cells.Count; j++)
{
ExcelApp.Cells[i + 1, j + 1] = row.Cells[j].ToString();
}
}
DialogResult res = saveFileDialogSummary.ShowDialog();
if(res == DialogResult.OK){
ExcelApp.ActiveWorkbook.SaveCopyAs(saveFileDialogSummary.FileName);
ExcelApp.ActiveWorkbook.Saved = true;
ExcelApp.Quit();
}
}
private void按钮1\u单击(对象发送者,事件参数e)
{
saveFileDialogSummary.Filter=“Excel Flie |*.xls”;
saveFileDialogSummary.FilterIndex=0;
saveFileDialogSummary.RestoreDirectory=true;
saveFileDialogSummary.CreatePrompt=true;
saveFileDialogSummary.Title=“将Excel文件导出到”;
Excel.Application ExcelApp=新的Excel.Application();
ExcelApp.Application.Workbooks.Add(Type.Missing);
ExcelApp.Columns.ColumnWidth=30;
对于(int i=0;i
如何避免收到警告信息?如果安装了最新的office,只需将.xls更改为.xlsx即可。我知道这个问题现在可能已经解决了,但是,在不修改代码的情况下尝试帮助您,仍然可以在您的中使用.xls格式,并通过设置注册表在打开文件时抑制此警告。 打开注册表编辑,导航至
HKEY\U CURRENT\U USER\Software\Microsoft\Office\14\Excel\Security
创建一个名为extensionharding
的DWord
,并将该值设置为0
这可能会使您的系统易受攻击,但在组织网络中工作时,这并不是什么大问题,至少在您确信下载了文档类型和源的情况下是如此。解决“文件格式和扩展名不匹配”的方法是在对文件进行了所有必要的编写之后,最后关闭工作簿**($workbook->close;)**
我在从邮件中打开“XLS”文件时遇到了同样的问题。我创建了一个文件并将我所有的东西都插入了init,在不关闭工作簿的情况下,我将邮件作为附件发送。后来我意识到必须关闭工作簿并作为附件发送。文件扩展名.xls和.xlsx包含不同的布局。扩展名.xls在版本2003中使用,而随后将使用版本.xlsx扩展名。
您必须将excel文件导出为.xlsx格式。它将支持我使用的所有版本 将以下DLL添加到bin文件夹中
1.ClosedXML.dll
2.DocumentFormat.OpenXml.dll 要导出到.xlsx的代码
您可以只使用
CSV
格式吗?每种风格的EXCEL文件都有FormatCode值-使用这些值,您就不必担心客户端安装了哪个版本。这是什么:ExcelApp.Application.Workbooks.Add(Type.Missing)代码>?是的。使用15和16也可以。谢谢这是否也适用于16 64位版本?我试过了,没用,对我有用!我使用32位Excel。干得好
DataTable dt = new DataTable();
//Create column and inser rows
using (XLWorkbook wb = new XLWorkbook())
{
var ws = wb.Worksheets.Add(dt, Sheetname);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Charset = "";
HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + p_FileName + ".xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(HttpContext.Current.Response.OutputStream);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
}