我以编程方式使用xml生成excel文件。在尝试打开文件时,我收到以下消息:
“您尝试打开的文件'MyFile.xls'的格式与文件扩展名指定的格式不同。在打开文件之前,请验证文件是否已损坏且来自受信任的来源。想立即打开文件?“
当用户按“是”时,文件打开没有问题。但是这个警告和需要额外点击是令人讨厌的。你能否建议我如何摆脱它?
这是我的代码的一部分:
var stream = File.Create(path);
var w = new XmlTextWriter(stream, null); // Creates the XML writer from pre-declared stream.
//First Write the Excel Header
w.WriteStartDocument();
w.WriteProcessingInstruction("mso-application", "progid='Excel.Sheet'");
w.WriteStartElement("Workbook");
w.WriteAttributeString("xmlns", "urn:schemas-microsoft-com:office:spreadsheet");
w.WriteAttributeString("xmlns", "o", null, "urn:schemas-microsoft-com:office:office");
w.WriteAttributeString("xmlns", "x", null, "urn:schemas-microsoft-com:office:excel");
w.WriteAttributeString("xmlns", "ss", null, "urn:schemas-microsoft-com:office:spreadsheet");
w.WriteAttributeString("xmlns", "html", null, "http://www.w3.org/TR/REC-html40");
w.WriteStartElement("DocumentProperties");
w.WriteAttributeString("xmlns", "urn:schemas-microsoft-com:office:office");
w.WriteEndElement();
// Creates the workbook
w.WriteStartElement("ExcelWorkbook");
w.WriteAttributeString("xmlns", "urn:schemas-microsoft-com:office:excel");
w.WriteEndElement();
答案 0 :(得分:3)
除了使用XmlTextWriter创建电子表格之外,使用专门用于创建Excel文件的库可能会更好。否则,您最终会遇到类似于您所看到的问题 - 像xmlns属性这样的小错误导致您的文件显示已损坏。专门为创建xls文件而编写的库已经解决了这个问题。
EPPlus似乎得到了很好的支持:http://epplus.codeplex.com/
答案 1 :(得分:0)
当您使用XmlTextWriter
时,您会获得与.xls
不同的格式。您创建的是,是的,Excel支持它,但每次您都会收到警告消息。
正如@matt已经提到的,使用特定的库以适当的excel格式创建文件要容易得多。我还建议你看看npoi图书馆。如果你使用旧的.xls
格式,那就太好了。