C# 關於WPS文檔讀寫的通用化探索

一、前言

使用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);
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章