ExcelXmlWriter - tworzenie plików Excela

by Piotrosz 16. September 2009
Być może się komuś przyda. Ta darmowa biblioteka: http://www.carlosag.net/Tools/ExcelXmlWriter/ o nazwie CarlosAg Excel Xml Writer Library umożliwia tworzenie plików Excela w formacie XML (dokładniej jako: XML Spreadsheet). Nie wymaga ona zainstalowanego Excela. Wspiera formatowanie, wyrównania, formuły, tabele przestawne i inne rzeczy. Za długi przykład:
Workbook book = new Workbook();
book.Properties.Author = "Nikt";
book.Properties.Company = "Żadna";
book.Properties.Title = "Bez tytułu";
book.Properties.Created = DateTime.Now;

// Stworzenie stylów wierszy
WorksheetStyle stHeader = book.Styles.Add("Header");
stHeader.Font.Size = 9;
stHeader.Font.FontName = "Tahoma";
stHeader.Font.Color = "Black";
stHeader.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1);
stHeader.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1);
stHeader.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1);
stHeader.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1);
stHeader.Borders[0].Color = "Gray";
stHeader.Borders[1].Color = "Gray";
stHeader.Borders[2].Color = "Gray";
stHeader.Borders[3].Color = "Gray";

WorksheetStyle stRow = book.Styles.Add("Row");
stRow.Font.Size = 9;
stRow.Font.FontName = "Tahoma";
stRow.Font.Bold = false;
stRow.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1);
stRow.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1);
stRow.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1);
stRow.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1);
stRow.Borders[0].Color = "Gray";
stRow.Borders[1].Color = "Gray";
stRow.Borders[2].Color = "Gray";
stRow.Borders[3].Color = "Gray";

WorksheetStyle stAltRow = book.Styles.Add("AltRow");
stAltRow.Font.Size = 9;
stAltRow.Font.FontName = "Verdana";
stAltRow.Font.Bold = true;
stHeader.Font.Color = "Black";
stAltRow.Interior.Color = "#F0F0F0";
stAltRow.Interior.Pattern = StyleInteriorPattern.Solid;
stAltRow.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1);
stAltRow.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1);
stAltRow.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1);
stAltRow.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1);
stAltRow.Borders[0].Color = "Gray";
stAltRow.Borders[1].Color = "Gray";
stAltRow.Borders[2].Color = "Gray";
stAltRow.Borders[3].Color = "Gray";

Worksheet sheet = book.Worksheets.Add("Arkusz 1");

// Ustawienie szerokości kolumn
sheet.Table.Columns.Add(new WorksheetColumn(50));
sheet.Table.Columns.Add(new WorksheetColumn(150));

// Dodanie wiersza tytułowego
WorksheetRow row = sheet.Table.Rows.Add();
row.Cells.Add(new WorksheetCell("AAA", "Header"));
row.Cells.Add(new WorksheetCell("BBB", "Header"));

string style;
Random random = new Random();
for (int i = 0; i < 10; i++)
{
    style = (i % 2 == 0) ? "Row" : "AltRow";
    WorksheetRow wr = sheet.Table.Rows.Add();

    // Dodanie wiersza z danymi
    wr.Cells.Add(random.Next(1000).ToString(), DataType.Number, style);
    wr.Cells.Add(random.Next(1000).ToString(), DataType.Number, style);
}
book.Save("test.xml");
A oto wynik działania tego fragmentu kodu, czyli stworzony plik Excela:

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen