6

テーブルがいくつかある Word 文書を Excel ファイルに変換する方法はありますか? テーブルを変換すると非常に便利です。

そんな感じ:

  • OpenXML を使用して Word 文書を開く
  • すべてのテーブルの xml-tags を検索
  • xml タグをコピーする
  • エクセルファイルを作成
  • Wordから新しいExcelファイルにテーブルを含むxmlタグを挿入します

つまり

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
}
4

2 に答える 2

1

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;
    }

CSVまたはHTMLフォーマットを使用して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>
于 2013-05-20T19:32:33.977 に答える