0

私はSilverlightを初めて使用します。

Silverlight 3、SQL Server 2005 で VS-2008 を使用しています。

私の要件は次のとおりです。データベースからデータを取得し、Excel にエクスポートする必要があります。

Google で検索しましたが、要件を満たすための適切なリンクや資料が得られません。

誰かが私にそれを行う方法を教えてもらえますか?

よろしくお願いします。

4

1 に答える 1

0

最も簡単な方法は、NPOI (npoi.codeplex.com) を使用することです。

基本的に、xaml で次のイベントを定義できます。

private void Button_Click(object sender, RoutedEventArgs e)
{
    WebClient client = new WebClient();
    client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
    client.DownloadStringAsync(new Uri("DownloadFile.aspx", UriKind.Absolute));
}

サーバー プロジェクト ページの DownloadFile.aspx で次のようにします。

using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.SS.UserModel;

public partial class DownloadFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    string filename = "test.xls";
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", filename));
    Response.Clear();

    InitializeWorkbook();
    GenerateData();
    Response.BinaryWrite(WriteToStream().GetBuffer());
    Response.End();
}

HSSFWorkbook hssfworkbook;

MemoryStream WriteToStream()
{
    //Write the stream data of workbook to the root directory
    MemoryStream file = new MemoryStream();
    hssfworkbook.Write(file);
    return file;
}

void GenerateData()
{
    Sheet sheet1 = hssfworkbook.CreateSheet("Sheet1");

    sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample");
    int x = 1;
    for (int i = 1; i <= 15; i++)
    {
        Row row = sheet1.CreateRow(i);
        for (int j = 0; j < 15; j++)
        {
            // add you data from the db
            row.CreateCell(j).SetCellValue(x++);
        }
    }
}

void InitializeWorkbook()
{
    hssfworkbook = new HSSFWorkbook();

    ////create a entry of DocumentSummaryInformation
    DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
    dsi.Company = "NPOI Team";
    hssfworkbook.DocumentSummaryInformation = dsi;

    ////create a entry of SummaryInformation
    SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
    si.Subject = "NPOI SDK Example";
    hssfworkbook.SummaryInformation = si;
    }
}

NPOI リリースのサンプルも確認してください。お役に立てば幸いです。

ソース: http://go4answers.webhost4life.com/Question/easiest-npoi-codeplex-basically-define-817046.aspx

于 2012-10-07T07:51:17.347 に答える