使用 C#.net 2.0 以 HTML/Test 格式打印数据表的内容,包括标题和总计

发布于 2024-10-21 00:14:18 字数 652 浏览 2 评论 0原文

我有一个使用动态 SQL 生成动态报告的应用程序。查询的结果将存储在数据表中。我需要一个函数来将数据表和列宽作为输入并以 HTML/文本格式打印报告。该函数应识别数据列的正确数据类型并根据数据类型对其进行格式化。

我将编写一个这样的查询并将值提取到数据表中:
选择[ID] ,[帐户名称] AS [帐户名称] ,[翻译日期] AS [翻译日期] ,[数量] FROM [AccountsTable]

以下是数据表中的结果集:
ID [账户名称] [交易日期] [金额]
656 销售帐户 2003 年 4 月 14 日 13500.00
657 购买帐户 2003 年 4 月 15 日 2000.00
658 支票账户 2003 年 4 月 15 日 5250.00
659 销售帐户 2003 年 4 月 16 日 8000.00
660 支票账户 2003 年 4 月 17 日 6500.00
661 购买帐户 2003 年 4 月 18 日 1000.00
662 贸易账户 2003 年 4 月 18 日 10250.00
663 折扣账户 2003 年 4 月 19 日 500.00
总计:47000.00

我想将这些值打印到 HTML 文件中,如上所示。请帮我。

I have an application to generate dynamic reports using dynamic SQLs. The results of the query will be stored in datatables. I need a function to take the datatable and column width as input and print report in HTML/Text format. The function should identify correct data type of datacolumn and format it as per the data type.

I'll write a query like this and fetch the values into data table:
SELECT [ID]
,[AccountName] AS [Account Name]
,[TransDate] AS [Trans Date]
,[Amount]
FROM [AccountsTable]

The following is the result set in datatable:
ID [Account Name] [Trans Date] [Amount]
656 Sales Account 14-Apr-2003 13500.00
657 Purchase Account 15-Apr-2003 2000.00
658 Cheque Account 15-Apr-2003 5250.00
659 Sales Account 16-Apr-2003 8000.00
660 Cheque Account 17-Apr-2003 6500.00
661 Purchase Account 18-Apr-2003 1000.00
662 Trade Account 18-Apr-2003 10250.00
663 Discount Account 19-Apr-2003 500.00
Totals: 47000.00

I would like to print these values into HTML File as shown above. Please help me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

久夏青 2024-10-28 00:14:18
protected void Page_Load(object sender, EventArgs e)
    {

        //make your own table here, whathever way you like ie get it from database
        DataTable dt = new DataTable();
        dt.Columns.Add("col1");
        dt.Columns.Add("col2");
        dt.Rows.Add(new object[] { "1", "2" });
        dt.Rows.Add(new object[] { "5", "6" });

        RenderTable(dt, 100);
    }

    private void RenderTable(DataTable datatable, int column_width)
    {
        Table table = new Table();

        //add header to your table 
        TableHeaderRow header = new TableHeaderRow();

        foreach (DataColumn dcol in datatable.Columns)
        {
            TableHeaderCell cell = new TableHeaderCell();
            cell.Width = column_width;

            Label headlbl = new Label();
            headlbl.Text = dcol.ColumnName;

            cell.Controls.Add(headlbl);
            header.Controls.Add(cell);
        }

        table.Controls.Add(header);

        //fill with data
        foreach (DataRow row in datatable.Rows)
        {
            TableRow tr = new TableRow();
            for (int i = 0; i < datatable.Columns.Count; i++)
            {
                TableCell td = new TableCell();
                td.Width = column_width;

                Label label = new Label();
                label.Text = Convert(row[i], datatable.Columns[i].DataType);

                td.Controls.Add(label);
                tr.Controls.Add(td);
            }

            table.Controls.Add(tr);
        }

        //add other rows here ie totals

        Page.Controls.Add(table);

    }

    private string Convert(object val, Type type)
    {
        //do whatever you want with format of your cells
        return val.ToString();
    }
protected void Page_Load(object sender, EventArgs e)
    {

        //make your own table here, whathever way you like ie get it from database
        DataTable dt = new DataTable();
        dt.Columns.Add("col1");
        dt.Columns.Add("col2");
        dt.Rows.Add(new object[] { "1", "2" });
        dt.Rows.Add(new object[] { "5", "6" });

        RenderTable(dt, 100);
    }

    private void RenderTable(DataTable datatable, int column_width)
    {
        Table table = new Table();

        //add header to your table 
        TableHeaderRow header = new TableHeaderRow();

        foreach (DataColumn dcol in datatable.Columns)
        {
            TableHeaderCell cell = new TableHeaderCell();
            cell.Width = column_width;

            Label headlbl = new Label();
            headlbl.Text = dcol.ColumnName;

            cell.Controls.Add(headlbl);
            header.Controls.Add(cell);
        }

        table.Controls.Add(header);

        //fill with data
        foreach (DataRow row in datatable.Rows)
        {
            TableRow tr = new TableRow();
            for (int i = 0; i < datatable.Columns.Count; i++)
            {
                TableCell td = new TableCell();
                td.Width = column_width;

                Label label = new Label();
                label.Text = Convert(row[i], datatable.Columns[i].DataType);

                td.Controls.Add(label);
                tr.Controls.Add(td);
            }

            table.Controls.Add(tr);
        }

        //add other rows here ie totals

        Page.Controls.Add(table);

    }

    private string Convert(object val, Type type)
    {
        //do whatever you want with format of your cells
        return val.ToString();
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文