2

ビジネス規模の準備をしているときに、この作業に時間がかかりすぎていることに気付きました。協議会からインターネット経由でエクセルファイルが送られてきて、同じように計算して送信します。そこで、事業規模の準備を自動化したい。

このために、Windows フォーム アプリケーションを作成しました。私のアプリケーションはデスクトップ アプリケーション (WinForms) です。すべてのデータはテキストボックスに書き込まれます。[OK] ボタンをクリックすると、プログラムは「template.xls」を読み取り、括弧「{}」を示すすべての変数をテキストボックスの値に置き換える必要があります。しかし、.xls ファイルを読み取り、変数を値に置き換え、テンプレートを完成したドキュメントとして保存する方法がわかりません。以下にエクセルファイルのスクリーンショットを追加しました。ここに画像の説明を入力

どうすればこれを行うことができますか?
敬具。

4

7 に答える 7

5

アプリケーションがデスクトップ アプリケーション (WinForms、WPF) の場合は、Interopを使用できます。Excel をローカルにインストールする必要があります。ただし注意してください: Interop は、MS によるサーバー シナリオではサポートされていません

Excel がローカルにインストールされていない場合、および/またはこれをサーバー側 (ASP.NET など) で実行したい場合は、相互運用/サーバーへの Excel のインストールなしで Excel ファイルを読み取り/編集/作成するための多くのオプションがあります。

MS は無料の OpenXML SDK V 2.0 を提供しています - http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspxを参照してください(XLSX のみ)

これは、MS Office ファイル (Excel を含む) を読み書きできます。

別の無料オプションを参照してください http://www.codeproject.com/KB/office/OpenXML.aspx (XLSX のみ)

古いバージョンの Excel (XLSX だけでなく XLS など) の処理、レンダリング、PDF の作成、数式などが必要な場合は、ClosedXML (無料、XLSX のみ)、EPPlus (無料、XLSX のみ)などのさまざまな無料および商用ライブラリがあります。 、Aspose.CellsSpreadsheetGearLibXLFlexcelなど。

于 2013-08-19T10:09:41.200 に答える
1

EPPlusは、Open Office Xml 形式 (xlsx) を使用して Excel 2007/2010 ファイルを読み書きする .net ライブラリです。

使用例は、こちらプロジェクト サイトにあります。

それは次のように簡単です

ws.Cells["B1"].Value = "My Cell Value";

Excel ファイル (ブラケット フィールド {*} を持つセル) から読み取り、必要に応じて置き換えて保存できます。

セルにフィールドがあるかどうかを確認するには、次のような正規表現を使用できますRegex.IsMatch(cellValue, "\{.*\}")

Open Office 形式を使用しているためシームレスなので、Excel をインストールする必要はありません。

于 2013-08-19T13:07:59.673 に答える
0

私の会社はNPOIを利用しています。ここで見つけることができます:

http://npoi.codeplex.com/

Excel をインストールする必要はなく、.net 2.0 以降で動作します。ドキュメントは完全ではありませんが、同等の Java を検索できます (同じクラスとメソッドを持っています)。

http://poi.apache.org/

Excel がインストールされていることがわかっている場合は、oledb を使用してみてください。

http://www.codeproject.com/Articles/8500/Reading-and-Writing-Excel-using-OLEDB

しかし、xlsxではなくxlsでのみ機能すると思います。

于 2013-08-21T21:48:59.743 に答える
0

申し訳ありませんが、C# を使用して攻撃する必要はありません。VB Script の方が適していたでしょう。しかし、いずれにしても、Excel セルにタグを入力するのではなく、別のマッピング (ソース フィールドと Excel セルの場所など) を維持していたでしょう。元の「テンプレート」を保存することは、私のペットの不満です。

于 2013-08-24T17:11:07.343 に答える
0

一方、これを Web ベース アプリまたはデスクトップ PHP アプリにすることを選択した場合は、PHP Excel ライブラリを強くお勧めします。スプレッドシートの作成にはかなりの時間がかかりますが、シートからのデータの読み取りは数行の単純なコードを実行すると、すべてのアクティブ セルの値を保持する配列が表示されます。複数ページのシートや定型データを扱うこともできます。

于 2013-08-19T12:52:47.990 に答える
0

xls ドキュメントを読むには、このコードを使用できます。後

1.文字列配列リストにすべての値を追加できます。
2.正規表現を使用できます。例えば

if(a.include("{"))

そのように replaceall("{","") 。

私はあなたにアルゴリズムを与えます。Umarım yardımcı olmuştur dostum :)

// Get the file we are going to process
var existingFile = new FileInfo(filePath);
// Open and read the XlSX file.
using (var package = new ExcelPackage(existingFile))
{
    // Get the work book in the file
    ExcelWorkbook workBook = package.Workbook;
    if (workBook != null)
    {
        if (workBook.Worksheets.Count > 0)
        {
            // Get the first worksheet
            ExcelWorksheet currentWorksheet = workBook.Worksheets.First();

            // read some data
            object col1Header = currentWorksheet.Cells[0, 1].Value;
于 2013-08-23T07:48:53.343 に答える