Jag undrar om någon har erfarenhet av att skapa Excel-dokument utifrån en ASP.NET-sida. Jag jobbar med C#, eller rättare sagt, jag försöker lära mig. Hallå! Jag har ett exempel i ASP.NET VB tyvärr ej i C#. Riktigt. Jag är jättetacksam för ett utvecklande av ditt inlägg. Jag har skapat en "pivot"-tabell där resultatet redovisas i en html-tabell. Men jag behöver kunna öppna den tabellen i Excel på ett smidigt sätt. Yep. Det funkar fint. Märker dock ett litet problem. Man måste vara noga med att stänga fönstret med "excel-dokumentet" innan man skapar ett nytt, annars uppstår ibland problem med att öppna det nya. Nu har jag dock ytterligare en förfrågan. Av någon anledning verkar inte språkkodningen vara rätt, då å, ä och ö blir helt "galna". Finns det nåt sätt att tala om för sidan som skapas vilken språkkod som gäller?Skapa Excel-dokument från ASP.NET med C#
Sv: Skapa Excel-dokument från ASP.NET med C#
Antar att du menar att t.ex. skapa en HTML-tabell eller liknande och sedan öppna detta i Excel via Internet Explorer? (med hjälp av ASP.NET och C#)
1. Generera en HTML-tabell via t.ex. en DataGrid
2. Lägg till en "header" för sidan/anropet
<code>
Response.AddHeader("content-type", "application/vnd.ms-excel");
</code>
Kan förtydliga om så behövs.
Lycka till!
/HåkanSv: Skapa Excel-dokument från ASP.NET med C#
Har problem med att processen intestängs ner fast man gör en Quit i slutet.
<code>
Dim excelApp As New Excel.Application()
Dim excelBook As Excel.Workbook = excelApp.Workbooks.Add
Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet)
Dim tmp As String
With excelWorksheet
.Range("A2").Value = "P19000 Tidrapport"
.Range("A4").Value = "23"
.Range("A6").Value = "15"
.Range("A8").Value = "2003-08-31"
End With
Dim i As Integer
tmp = ""
For i = 10 To 20
tmp &= Convert.ToString(Int(i * Rnd()))
Next
excelBook.SaveAs("D:\XLS\" & tmp & ".xls")
excelApp.Workbooks.Close()
excelApp.Quit()
excelWorksheet = Nothing
excelBook = Nothing
excelApp = Nothing
</code>Sv: Skapa Excel-dokument från ASP.NET med C#
Man kan göra som beskrivet men bieffekten är ett av problemen som MS beskriver när man använder MS Office på servern, i server-lösningar.
I så fall bör man ha en egen server för att hantera detta, så att detta inte stör andra delar i t.ex. en produktionsmiljö.
/HåkanSv: Skapa Excel-dokument från ASP.NET med C#
Sv: Skapa Excel-dokument från ASP.NET med C#
Har gjort ett förenklat exempel som visar resultatet i Excel, i webbläsaren.
1. Skapa ett nytt Web Form t.ex. ShowInExcel.aspx (sätt denna till startsida i projektet)
2. Lägg till en DataGrid på detta Web Form
3. Sätt ID på DataGrid:en till PivotTableGrid
4. Skriv följande kod i Page_Load
<code>
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
DataTable dt;
DataRow dr;
dt = new DataTable("PivotTable");
dt.Columns.Add("RowHeaderField", typeof(System.String));
dt.Columns.Add("Col1", typeof(System.String));
dt.Columns.Add("Col2", typeof(System.String));
dr = dt.NewRow();
dr["RowHeaderField"] = "";
dr["Col1"] = "SEK";
dr["Col2"] = "EUR";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["RowHeaderField"] = "2001";
dr["Col1"] = "90000000";
dr["Col2"] = "1000";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["RowHeaderField"] = "2002";
dr["Col1"] = "90000000";
dr["Col2"] = "2000000000";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["RowHeaderField"] = "2003";
dr["Col1"] = "90000000";
dr["Col2"] = "800000000000000000";
dt.Rows.Add(dr);
PivotTableGrid.DataSource = dt;
PivotTableGrid.DataBind();
Response.AddHeader("content-type", "application/vnd.ms-excel");
}
</code>
5. Kör projektet
Säg till om det inte fungerar.
Lycka till!
/HåkanSv: Skapa Excel-dokument från ASP.NET med C#