ASP.NET在Excel中输出费用报表

ASP.NET在Excel中输出费用报表,asp.net,excel,reporting,Asp.net,Excel,Reporting,在我现在正在处理的这个项目中,最新的功能要求之一是输出费用信息,这些信息存储在费用报告中,与他们已经用于所有费用报告的Excel工作表相匹配 我很好奇是否有一种方法可以让我使用这个excel工作表(其所有布局都已完成),只填写系统跟踪的部分,然后将其作为.xls文件提供给用户,而无需执行excel自动化或任何其他需要在服务器上安装excel的方法 注意:开发环境是ASP.NET 2.0,试试看,效果很好。试试看,效果很好。Telerik RAD Grid for ASP.NetAJAX有很好的E

在我现在正在处理的这个项目中,最新的功能要求之一是输出费用信息,这些信息存储在费用报告中,与他们已经用于所有费用报告的Excel工作表相匹配

我很好奇是否有一种方法可以让我使用这个excel工作表(其所有布局都已完成),只填写系统跟踪的部分,然后将其作为.xls文件提供给用户,而无需执行excel自动化或任何其他需要在服务器上安装excel的方法


注意:开发环境是ASP.NET 2.0,试试看,效果很好。

试试看,效果很好。

Telerik RAD Grid for ASP.NetAJAX有很好的Excel导出功能。

Telerik RAD Grid for ASP.NetAJAX有很好的Excel导出功能。

您可以试试Spire.XLS()

它不是免费的,但在阅读和创建XLS文档方面做得很好,而不必在服务器上显示Excel。

您可以尝试Spire.XLS()


它不是免费的,但在阅读和创建XLS文档方面做得很好,而不必在服务器上显示Excel。

我确信您可以使用OleDB打开Excel文件(使用模板)

示例1

string ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;
                    Data Source=C:\Test Projects\Excel example\Excel - reading an excel file\ReadThis.xls;
                    Extended Properties=Excel 5.0";

//Create the connection
 System.Data.OleDb.OleDbConnection ExcelConnection = new System.Data.OleDb.OleDbConnection(ConnectionString);

示例2

string filename = @"C:\testdata.xls";

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +

"Data Source=" + filename + ";" +

"Extended Properties=Excel 8.0;";

OleDbConnection objConn = new OleDbConnection(connectionString);

objConn.Open();

OleDbCommand ObjCommand = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);

OleDbDataAdapter objAdp = new OleDbDataAdapter();

objAdp.SelectCommand = ObjCommand;

DataSet myDataSet = new DataSet();

objAdp.Fill(myDataSet);

DataTable dataTable = myDataSet.Tables["Sheet1$"];


一旦你打开了连接,你应该能够读写它,无论你喜欢

我确信您可以使用OleDB打开excel文件(带模板)

示例1

string ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;
                    Data Source=C:\Test Projects\Excel example\Excel - reading an excel file\ReadThis.xls;
                    Extended Properties=Excel 5.0";

//Create the connection
 System.Data.OleDb.OleDbConnection ExcelConnection = new System.Data.OleDb.OleDbConnection(ConnectionString);

示例2

string filename = @"C:\testdata.xls";

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +

"Data Source=" + filename + ";" +

"Extended Properties=Excel 8.0;";

OleDbConnection objConn = new OleDbConnection(connectionString);

objConn.Open();

OleDbCommand ObjCommand = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);

OleDbDataAdapter objAdp = new OleDbDataAdapter();

objAdp.SelectCommand = ObjCommand;

DataSet myDataSet = new DataSet();

objAdp.Fill(myDataSet);

DataTable dataTable = myDataSet.Tables["Sheet1$"];


一旦你打开了连接,你应该能够读写它,无论你喜欢

我这样做的方法之一是使用Office XML生成文档。由于文档需要采用特定的格式,事情可能会有点困难,但我以前的做法是将需要在报表上显示的数据导出到XML文件(保存在磁盘或内存中)然后应用XSL转换将内容转换为Excel可以加载的格式正确的文档。以下是一些供您参考的链接:


我这样做的方法之一是使用Office XML生成文档。由于文档需要采用特定的格式,事情可能会有点困难,但我以前的做法是将需要在报表上显示的数据导出到XML文件(保存在磁盘或内存中)然后应用XSL转换将内容转换为Excel可以加载的格式正确的文档。以下是一些供您参考的链接:


另外两种解决方案是:

  • 使用OpenOffice(他们有一种不加载/显示UI的模式)
  • 使用库(可以将数据读/写到excel文件)
我必须说我对他们两个都没有经验。。。但是,除了JET.OLEDB提供程序和Chris和Rob提到的通过Xsl(我过去都使用过)将Xml转换为Excel之外,它们听起来像是可靠的替代方案


我只是想在路上帮助你,并提出一些替代方案(我不期望有太多的要点:)

另外两个解决方案是:

  • 使用OpenOffice(他们有一种不加载/显示UI的模式)
  • 使用库(可以将数据读/写到excel文件)
我必须说我对他们两个都没有经验。。。但是,除了JET.OLEDB提供程序和Chris和Rob提到的通过Xsl(我过去都使用过)将Xml转换为Excel之外,它们听起来像是可靠的替代方案


我只是想帮你一把,并提出一些备选方案(我不期望有太多的要点:)

虽然这不会处理你现有的电子表格,但生成Excel文件的一种非常简单和低技术的方法是创建一个具有正确内容类型的html文件,并使用.xls扩展名。当Excel(在客户端上)打开该文件时,它将被视为本机电子表格

例如:

<html>
    <head>
        <meta http-equiv="Content-Type" content="application/vnd.ms-excel" />
        <title></title>
    </head>
    <body>
        <table>
            <tr>
                <td><b>Forename</b></td>
                <td><b>Gender</b></td>
            </tr>
            <tr>
                <td>Simon</td>
                <td>Male</td>
            </tr>
            <tr>
                <td>Katy</td>
                <td>Female</td>
            </tr>
        </table>
    </body>
</html>

名字
性别
西蒙
男性
凯蒂
女性
注意事项:当然,您不会在实际文件中包含所有缩进和间距!我正在使用Excel2003

这种技术的另一个小好处是,这些文件生成起来非常高效


缺点:我还没有找到一种方法将html转换成多个工作表,或者做任何特别技术性的工作。

虽然这不会处理现有的电子表格,但生成Excel文件的一种非常简单和低技术的方法是创建一个具有正确内容类型的html文件,并使用.xls扩展名。当Excel(在客户端上)打开该文件时,它将被视为本机电子表格

例如:

<html>
    <head>
        <meta http-equiv="Content-Type" content="application/vnd.ms-excel" />
        <title></title>
    </head>
    <body>
        <table>
            <tr>
                <td><b>Forename</b></td>
                <td><b>Gender</b></td>
            </tr>
            <tr>
                <td>Simon</td>
                <td>Male</td>
            </tr>
            <tr>
                <td>Katy</td>
                <td>Female</td>
            </tr>
        </table>
    </body>
</html>

名字
性别
西蒙
男性
凯蒂
女性
注意事项:当然,您不会在实际文件中包含所有缩进和间距!我正在使用Excel2003

这种技术的另一个小好处是,这些文件生成起来非常高效


缺点:我还没有找到一种方法将html转换成多个工作表,或者做任何特别技术性的工作。

这样做是否可以使用已经创建的excel文件,或者,是否需要在后端为结束报告创建所有布局,而不是从已经存在的excel文件中工作?aspose是否可以使工作在