一、前言
使用C#對WPS文檔進行讀寫時非常麻煩,當時作者爲了尋找解決方法浪費了很多時間,才終於在某個問答平臺裏找到了解決的辦法,因此這裏將這種比較通用的寫入WPS的思路貼出來作爲記錄。
二、正文
由於WPS是基於xml的,因此本文也將從這裏入手。
首先創建一個xls文檔,隨後添加一些內容
隨後將這個文件轉爲xml格式:
Workbook workbook = new Workbook();
workbook.LoadFromFile(excelFilePath);
workbook.SaveAsXml("F:\\result.xml");
這裏要添加一個引用:
然後將使用記事本打開得到的文檔:
可以看到有很多內容,然後將那些無關緊要的東西都刪掉:
保存後將後綴名修改爲.xls然後打開:
可以看到這裏是可以正確打開的。
從這裏可以知道當我們在編寫excel的時候只需要將對應的xml寫出來然後修改後綴名爲.xls就行了。
具體寫代碼的時候可以直接保存爲.xls,親測可用:
protected void ExportExcel(System.Data.DataSet set, string path)
{
XNamespace xmlns = "urn:schemas-microsoft-com:office:spreadsheet";
XElement workbook = new XElement(xmlns+"Workbook");
foreach(DataTable dt in set.Tables)
{
XElement worksheet = new XElement("Worksheet");
worksheet.SetAttributeValue("Name", dt.TableName);
XElement table = new XElement("Table");
XElement head = new XElement("Row");
foreach(DataColumn col in dt.Columns)
{
head.Add(new XElement("Cell",
new XElement("Data", new XAttribute("Type", "String"), col.Caption)));
}
table.Add(head);
foreach (DataRow row in dt.Rows)
{
XElement content = new XElement("Row");
foreach(DataColumn col in dt.Columns)
{
content.Add(new XElement("Cell",
new XElement("Data",new XAttribute("Type","String"),row[col])));
}
table.Add(content);
}
worksheet.Add(table);
workbook.Add(worksheet);
}
workbook.Save(path);
}