using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ExcelOpenXMLBasics {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
#if EN_US_CULTURE
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
#endif
}
private void btnCreateBasicWorkbook_Click(object sender, RoutedEventArgs e) {
this.CreateBasicWorkbook("BasicWorkbook.xlsx", true);
}
private void btnCreate10000SharedStrings_Click(object sender, RoutedEventArgs e) {
this.CreateStringWorkbook("SharedStrings10000.xlsx", 10000, true);
}
private void btnCreate10000Strings_Click(object sender, RoutedEventArgs e) {
this.CreateStringWorkbook("Strings10000.xlsx", 10000, false);
}
private void btnCreateBasicWorkbookPredefinedStyles_Click(object sender, RoutedEventArgs e) {
this.CreateBasicWorkbook("BasicWorkbookPredefinedStyles.xlsx", false);
}
/// <summary>
/// Creates a workbook with specified amount of strings
/// </summary>
/// <param name="workbookName">Name of the workbook</param>
/// <param name="stringCount">Number of strings to add</param>
/// <param name="useShared">Use shared strings?</param>
/// <returns>True if succesful</returns>
private bool CreateStringWorkbook(string workbookName, int stringCount, bool useShared) {
DocumentFormat.OpenXml.Packaging.SpreadsheetDocument spreadsheet;
DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet;
spreadsheet = Excel.CreateWorkbook(workbookName);
if (spreadsheet == null) {
return false;
}
Excel.AddBasicStyles(spreadsheet);
Excel.AddWorksheet(spreadsheet, "Strings");
worksheet = spreadsheet.WorkbookPart.WorksheetParts.First().Worksheet;
// Add shared strings
for (uint counter = 0; counter < stringCount; counter++) {
Excel.SetCellValue(spreadsheet, worksheet, 1, counter + 1, "Some string", useShared, false);
}
// Set column widths
Excel.SetColumnWidth(worksheet, 1, 15);
worksheet.Save();
spreadsheet.Close();
System.Diagnostics.Process.Start(workbookName);
return true;
}
/// <summary>
/// Creates a basic workbook
/// </summary>
/// <param name="workbookName">Name of the workbook</param>
/// <param name="createStylesInCode">Create the styles in code?</param>
private void CreateBasicWorkbook(string workbookName, bool createStylesInCode) {
DocumentFormat.OpenXml.Packaging.SpreadsheetDocument spreadsheet;
DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet;
System.IO.StreamReader styleXmlReader;
string styleXml;
spreadsheet = Excel.CreateWorkbook(workbookName);
if (spreadsheet == null) {
return;
}
if (createStylesInCode) {
Excel.AddBasicStyles(spreadsheet);
} else {
using (styleXmlReader = new System.IO.StreamReader("PredefinedStyles.xml")) {
styleXml = styleXmlReader.ReadToEnd();
Excel.AddPredefinedStyles(spreadsheet, styleXml);
}
}
Excel.AddSharedString(spreadsheet, "Shared string");
Excel.AddWorksheet(spreadsheet, "Test 1");
Excel.AddWorksheet(spreadsheet, "Test 2");
worksheet = spreadsheet.WorkbookPart.WorksheetParts.First().Worksheet;
// Add shared strings
Excel.SetCellValue(spreadsheet, worksheet, 1, 1, "Shared string", true);
Excel.SetCellValue(spreadsheet, worksheet, 1, 2, "Shared string", true);
Excel.SetCellValue(spreadsheet, worksheet, 1, 3, "Shared string", true);
// Add a string
Excel.SetCellValue(spreadsheet, worksheet, 1, 5, "Number", false, false);
// Add a decimal number
Excel.SetCellValue(spreadsheet, worksheet, 2, 5, 1.23, null, true);
// Add a string
Excel.SetCellValue(spreadsheet, worksheet, 1, 6, "Integer", false, false);
// Add an integer number
Excel.SetCellValue(spreadsheet, worksheet, 2, 6, 1, null, true);
// Add a string
Excel.SetCellValue(spreadsheet, worksheet, 1, 7, "Currency", false, false);
// Add currency
Excel.SetCellValue(spreadsheet, worksheet, 2, 7, 1.23, 2, true);
// Add a string
Excel.SetCellValue(spreadsheet, worksheet, 1, 8, "Date", false, false);
// Add date
Excel.SetCellValue(spreadsheet, worksheet, 2, 8, System.DateTime.Now, 1, true);
// Add a string
Excel.SetCellValue(spreadsheet, worksheet, 1, 9, "Percentage", false, false);
// Add percentage
Excel.SetCellValue(spreadsheet, worksheet, 2, 9, 0.123, 3, true);
// Add a string
Excel.SetCellValue(spreadsheet, worksheet, 1, 10, "Boolean", false, false);
// Add percentage
Excel.SetCellValue(spreadsheet, worksheet, 2, 10, true, null, true);
// Set column widths
Excel.SetColumnWidth(worksheet, 1, 15);
Excel.SetColumnWidth(worksheet, 2, 20);
worksheet.Save();
spreadsheet.Close();
System.Diagnostics.Process.Start(workbookName);
}
}
}