0

既存のExcelファイルを開いてDataTableで埋める必要があります。どうやってやるの?

ASP.NETで作業しています

私はすでにこのソリューション(http://stackoverflow.com/questions/1746701/export-datatable-to-excel-file)でExcelを作成しようとしましたが、このようなOLEDB接続で開こうとしましたが、動作しませんでした..テーブルが正しい形式ではないと表示されました..次に、irがISAMファイルを見つけることができなかったと表示されました..どうすればよいかわかりません..

System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\reports\report.xls;Extended Properties=""Excel 8.0;HDR=No;IMEX=1""");

conn.Open();
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
cmd.Connection = conn;

cmd.CommandText = @"SELECT * INTO [Excel 8.0;Database=C:\reports\reportBase.xls].[SheetBase1] FROM Sheet1]";

cmd.ExecuteNonQuery();
conn.Close();

私を助けてください!!私は絶望的です!!

ありがとうございました!!

4

4 に答える 4

5

サードパーティの Excel .NET ライブラリにも関心がある場合は、既存の Excel ファイルを開いて、GemBox.Spreadsheet Excel C# / VB.NETライブラリを使用して DataTable を入力できます。

以下は、既存の Excel ファイルを開き、DataTable を入力してブラウザーにストリーミングする Excel ASP.NET のサンプルです。

DataTable people = (DataTable)Session["people"];

// Open excel file and insert data table.
ExcelFile ef = new ExcelFile();
ef.LoadXls(Server.MapPath("MyData.xls"));
ExcelWorksheet ws = ef.Worksheets[0];
ws.InsertDataTable(people, "A1", true);

Response.Clear();

// Stream file to browser, in required type.
switch (this.RadioButtonList1.SelectedValue)
{
    case "XLS":
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("Content-Disposition", "attachment; filename=" +
             "Report.xls");
        ef.SaveXls(Response.OutputStream);
        break;

    case "XLSX":
        Response.ContentType = "application/vnd.openxmlformats";
        Response.AddHeader("Content-Disposition", "attachment; filename=" +
             "Report.xlsx");
        // With XLSX it is a bit more complicated as MS Packaging API
        // can't write directly to Response.OutputStream.
        // Therefore we use temporary MemoryStream.
        MemoryStream ms = new MemoryStream();
        ef.SaveXlsx(ms)
        ms.WriteTo(Response.OutputStream);
        break;
}
Response.End();
于 2011-11-07T09:42:36.593 に答える
1

このソリューションを使用できます....データをデータテーブルに取得した後にのみ....

 protected void Button1_Click(object sender, EventArgs e)
 {
     DataTable dtRecords = new DataTable();
     dtRecords.Columns.Add("FIRSTNAME");
     dtRecords.Columns.Add("LASTNAME");
     dtRecords.Columns.Add("JOB");
     DataRow rw1 = dtRecords.NewRow();
     rw1[0] = "JHON";
     rw1[1] = "SMITH";
     rw1[2] = "MANAGER";
     dtRecords.Rows.Add(rw1);
     DataRow rw2 = dtRecords.NewRow();
     rw2[0] = "MICH";
     rw2[1] = "KEN";
     rw2[2] = "SR MANAGER";
     dtRecords.Rows.Add(rw2);

     UploadDataTableToExcel(dtRecords);

}
protected void UploadDataTableToExcel(DataTable dtRecords)
{
        string XlsPath = Server.MapPath(@"~/Add_data/test.xls");
        string attachment = string.Empty;
        if (XlsPath.IndexOf("\\") != -1)
        {
            string[] strFileName = XlsPath.Split(new char[] { '\\' });
            attachment = "attachment; filename=" + strFileName[strFileName.Length - 1];
        }
        else
            attachment = "attachment; filename=" + XlsPath;
        try
        {
            Response.ClearContent();
            Response.AddHeader("content-disposition", attachment);
            Response.ContentType = "application/vnd.ms-excel";
            string tab = string.Empty;

            foreach (DataColumn datacol in dtRecords.Columns)
            {
                Response.Write(tab + datacol.ColumnName);
                tab = "\t";
            }
            Response.Write("\n");

            foreach (DataRow dr in dtRecords.Rows)
            {
                tab = "";
                for (int j = 0; j < dtRecords.Columns.Count; j++)
                {
                    Response.Write(tab + Convert.ToString(dr[j]));
                    tab = "\t";
                }

                Response.Write("\n");
            }
            Response.End();
        }
        catch (Exception ex)
        {
            //Response.Write(ex.Message);
        }
}
于 2011-11-04T20:29:14.470 に答える
1

サードパーティの Excel .NET ライブラリにも関心がある場合は、既存の Excel ファイルを開いて、GemBox.Spreadsheet Excel C# / VB.NET ライブラリを使用して DataTable を入力できます。

または、ライセンスに 480 ドルを費やしたくない場合は、Export to Excel C# クラスを完全に無料でダウンロードできます。

OpenXML ライブラリを使用して実際の Excel 2007 ファイルを作成します。ファイル名を指定して、"CreateExcelDocument" 関数を呼び出すだけです。

DataSet ds = CreateSampleData();
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);

DataSet、DataTable、または List<> から Excel ファイルを作成できます。

すべてのソース コードは、手順とデモ プロジェクトと共に、私の Web ページで完全に無料で提供されています。

http://mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

ASP.Net アプリで Excel ファイルを作成し、それを開く方法を示すサンプル コードもあります。

幸運を !

于 2013-02-01T08:25:37.113 に答える