0

ユーザーがいくつかのフィルター/基準に基づいてデータベース内のアイテムを検索できるようにする Web ページを開発しています。要件の 1 つは、このデータをスプレッドシート (Excel) にエクスポートできることです。これまでのところ、CSV ファイルを利用して非常に簡単な方法を作成しました。

//get model...
StringWriter sw = new StringWriter();

//First line for column names
sw.WriteLine("col1,col2,col3");

foreach (DataType i in model)
{
    sw.WriteLine(string.Format({0},{1},{2},
                                i.data1,
                                i.data2,
                                i.data3));
}

Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
Response.ContentType = "text/csv";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.Write(sw);
Response.End(); 

シンプルですが、スプレッドシートの書式設定をより細かく制御したいと考えています。いくつかの検索の後、次のドキュメントを見つけました:ウィキペディアMSDNは、Excel で受け入れられる XML のタイプを説明しています。このドキュメント タイプについて詳しく知りたいのですが、ドキュメントが不足しているようです。wiki リンクのどこにもフォーマットの詳細はなく、MSDN の記事にも例がありません。ss: workbook異なるバージョン ( vs )を使用しているように見えるため、2 つを相互参照することはできませんworkbook。一体、、、、および接頭辞が何を表しss:ているのかさえわかりません。さらに、MSDN の記事は Office 2003 に関するもので、より新しいバージョンが見つからないようです。x:c:

おそらく、私はすべて間違ったことを調べているのでしょう。私の目標を達成するためのより現代的な方法はありますか? ソースは大歓迎です。


awkまたはperlを使用して、キーに応じて多数の列の値を交換するにはどうすればよいですか?

このような表形式のファイルで列を交換する簡単な方法はありますか?

キーは 1 列目と 3 列目ですが、2 列目を最初のキーに追加し、4 列目を 3 列目に追加する必要があります。列間のスワップは、2 番目のキー (3 列目) に対する最初のキー (1 列目) の存在に依存します。

A B C D    
E F A B
H I A G
J K L M 
N J Q K

望ましい出力は次のようになります。

A B C D    
A B E F
A G H I 
J K L M 
N J Q K
4

1 に答える 1

0

ジェフ、

これがあなたが探しているものかどうかわかりませんが、EPPlus は xlsx ワークシートを生成できます。「ここはこれを使って」とだけ言うのではなく、サンプルを提供したかったのです。

ここからのサンプルは次のとおりです: EPPlus Source Listing

ExcelPackage pkg = new ExcelPackage();

var ws = pck.Workbook.Worksheets.Add("Sheet1");

//First line for column names
ws.Cells["A1"] = "col1";
ws.Cells["A2"] = "col2";
ws.Cells["A3"] = "col3";

int row = 2;

foreach (DataType i in model)
{
    //I don't know you data model, I'm guessing

    //row, col
    ws.Cells[row, 1] = i.data1);
    ws.Cells[row, 2] = i.data2);
    ws.Cells[row, 3] = i.data3);

    row++;
}

pck.SaveAs(Response.OutputStream);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;  filename=YouNameGoesHere.xlsx");

うまくいけば、これはあなたが必要とするものに沿っています。

于 2013-02-05T20:55:54.613 に答える