使用OpenXML将Word docx转换为Excel

本文关键字:转换 Excel docx Word OpenXML 使用 | 更新日期: 2023-09-27 18:12:54

是否有任何方法将Word文档转换为Excel文件,我有一些表格?转换表格会很有帮助。

像这样:

  • 使用OpenXML打开Word文档
  • 查找所有表xml-tags
  • 复制xml标记
  • 创建Excel文件
  • 将xml标签与表格从Word插入到新的Excel文件

我的意思

void OpenWordDoc(string filePath)
{
_documentWord = SpreadsheetDocument.Open(filePath, true);
}
List<string> GetAllTablesXMLTags()
{
//find and copy
}
List<string> CreateExcelFile(string filePath)
{
TemplateExcelDocument excelDocument = new TemplateExcelDocument();
_documentExcel = excelDocument.CreatePackage(filePath);
}
void InsertXmlTagsToExcelFile(string filePath)
{
CreateExcelFiles(filePath);
var xmlTable = GetAllTablesXMLTags();
// ... insert to _documentExcel
}

使用OpenXML将Word docx转换为Excel

你的步骤是正确的。

我想分享一些sdk文档,希望能有所帮助:

Open XML SDK 2.5 for Office

处理单词表时:

使用WordprocessingML表(Open XML SDK)

处理excel表格时:

使用共享字符串表(Open XML SDK)

使用电子表格表(Open XML SDK)

要获取docx文件中的所有表,可以使用下面的代码:

using System;
using Independentsoft.Office;
using Independentsoft.Office.Word;
using Independentsoft.Office.Word.Tables;
namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            WordDocument doc = new WordDocument("c:''test.docx");
            Table[] tables = doc.GetTables();
            foreach (Table table in tables)
            {
                //read data
            }
        }
    }
}

要将它们写入excel文件,你必须对每个单元格这样做:

 app.Visible = false;
        workbooks = app.Workbooks;
        workbook =  workbooks.Add(XlWBATemplate.xlWBATWorksheet);
        sheets = workbook.Worksheets;
        worksheet = (_Worksheet)sheets.get_Item(1);
        excel(row, column, "value");
        workbook.Saved = true;
        workbook.SaveAs(output_file);
        app.UserControl = false;
        app.Quit();

最后excel函数如下:

    public void excel(int row, int column, string value)
    {
        worksheet.Cells[row, column] = value;
    }

也可以使用CSVHTML格式创建excel文件。要做到这一点,只需创建一个文件example.xlsx,内容为CSV,逗号分隔:

col1, col2、col3 col4 ' n

val1、val2 val3val4 ' n

或HTML格式:

<table>
 <tr>
  <td>col1</td>
  <td>col2</td>
  <td>col3</td>
 </tr>
 <tr>
  <td>val1</td>
  <td>val2</td>
  <td>val3</td>
 </tr>
</table>