word ppt excel 后缀加rar 都可以解压看到资源文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Text.RegularExpressions;namespace OpenXmlTest
{class TLExcel{#region 全局属性及方法public static int TLOK = 0;public static int TLERR = -1;public static void ShowMessage(string strMsg){Console.WriteLine(strMsg);}#endregion#region 私有属性private SpreadsheetDocument _spreadsheetDocument;#endregionpublic TLExcel(){ }/* 打开EXCEL */public int Open(string szPath) {try{_spreadsheetDocument = SpreadsheetDocument.Open(szPath, true);if (null == _spreadsheetDocument)return TLERR;return TLOK;}catch (Exception ex){ShowMessage("[Func:Open], Exception:" + ex.Message);return TLERR;}}/* 创建EXCEL */public int Create(string szPath){try{_spreadsheetDocument = SpreadsheetDocument.Create(szPath, SpreadsheetDocumentType.Workbook);// Add a WorkbookPart to the document.WorkbookPart workbookpart = _spreadsheetDocument.AddWorkbookPart();workbookpart.Workbook = new Workbook();// Add a WorksheetPart to the WorkbookPart.WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();worksheetPart.Worksheet = new Worksheet(new SheetData());// Add Sheets to the Workbook.Sheets sheets = _spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());// Append a new worksheet and associate it with the workbook.Sheet sheet = new Sheet() { Id = _spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" };sheets.Append(sheet);workbookpart.Workbook.Save();return TLOK;}catch (Exception ex){ShowMessage("[Func:Create], Exception:" + ex.Message);return TLERR;}}/* 保存Excel */public void Save(){try{_spreadsheetDocument.WorkbookPart.Workbook.Save();}catch (Exception ex){ShowMessage("[Func:Save],Exception:" + ex.Message);}}/* 关闭Excel */public void Close(){try{this.Save(); //先保存_spreadsheetDocument.Close();}catch (Exception ex){ShowMessage("[Func:Save],Exception:" + ex.Message);}}#region 读写EXCEL/// <summary>/// 读取单元格数据/// </summary>/// <param name="iSheetNum">Sheet编号</param>/// <param name="iRowNum">行号</param>/// <param name="strColName">列名</param>/// <param name="iColNum">返回的单元格数据</param>/// <returns>状态</returns>public int ReadCellValue(int iSheetNum, uint iRowNum, string strColName, ref string strValue){Worksheet sheet = GetSpreadsheetWorksheet(iSheetNum);if (null == sheet){return TLERR;}Cell cell = GetSpreadsheetCell(sheet, strColName, iRowNum);if (null == cell){strValue = null;return TLERR;}string value = cell.CellValue.InnerText;SharedStringTablePart shareStringPart = this.GetSharedStringTable();strValue = shareStringPart.SharedStringTable.ChildElements[Int32.Parse(value)].InnerText;return TLOK;}//写入数据public int WriteCellValue(int iSheetNum, uint iRowNum, string strColName, string strValue){//bool bIsNewCell = false; //是否是新单元格Worksheet sheet = GetSpreadsheetWorksheet(iSheetNum);if (null == sheet){return TLERR;}// Get the SharedStringTablePart and add the result to it.// If the SharedStringPart does not exist, create a new one.SharedStringTablePart shareStringPart = this.GetSharedStringTable();Cell cell = GetSpreadsheetCell(sheet, strColName, iRowNum);if (null == cell){//插入一个单元格cell = InsertCellInWorksheet(strColName, iRowNum, sheet);int iIndex = InsertSharedStringItem(strValue, shareStringPart);// Set the value of the cell.cell.CellValue = new CellValue(iIndex.ToString());cell.DataType = new EnumValue<CellValues>(CellValues.SharedString);}else{int iIndex;if (null == cell.CellValue){cell.CellValue = new CellValue();iIndex = InsertSharedStringItem(strValue, shareStringPart);cell.CellValue.Text = iIndex.ToString();}else { iIndex = Int32.Parse(cell.CellValue.Text);}OpenXmlElement xmlElement = shareStringPart.SharedStringTable.ChildElements[iIndex];((SharedStringItem)xmlElement).Text.Text = strValue;}return TLOK;}#endregion//获取行数public int GetRowsAndCols(int iSheetNum, ref int iRows){Worksheet workSheet = GetSpreadsheetWorksheet(iSheetNum);if (null == workSheet){return TLERR;}IEnumerable<Row> rows = workSheet.Descendants<Row>();iRows = rows.Count();return TLOK;}//获取Sheet数目public int GetWorksheetNumber(){IEnumerable<Sheet> sheets = _spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>();return sheets.Count();}//获取sheetNamepublic int GetWorksheetName(int iSheetNum, ref string strSheetName){IEnumerable<Sheet> sheets = _spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.SheetId == iSheetNum);if (1 != sheets.Count()){ShowMessage("[Func:ReadCellValue], 指定的Sheet不存在");return TLERR;}strSheetName = sheets.First().Name;return TLOK;}private Sheet GetSheet(int iSheetNum){IEnumerable<Sheet> sheets = _spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.SheetId == iSheetNum);if (1 != sheets.Count()){ShowMessage("[Func:ReadCellValue], 指定的Sheet不存在");return null;}return sheets.First();}private Sheet GetSheet(string strSheetName){IEnumerable<Sheet> sheets = _spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == strSheetName);if (1 != sheets.Count()){ShowMessage("[Func:ReadCellValue], 指定的Sheet不存在");return null;}return sheets.First();}private SharedStringTablePart GetSharedStringTable(){SharedStringTablePart shareStringPart;if (_spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().Count() > 0){shareStringPart = _spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();}else{shareStringPart = _spreadsheetDocument.WorkbookPart.AddNewPart<SharedStringTablePart>();}return shareStringPart;}//获取workSheetprivate Worksheet GetSpreadsheetWorksheet(int iSheetNum){Sheet sheet = GetSheet(iSheetNum);if (null == sheet)return null;WorksheetPart worksheetPart = (WorksheetPart)_spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id);Worksheet worksheet = worksheetPart.Worksheet;return worksheet;}//获取workSheetprivate Worksheet GetSpreadsheetWorksheet(string strSheetName){Sheet sheet = GetSheet(strSheetName);if (null == sheet)return null;WorksheetPart worksheetPart = (WorksheetPart)_spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id);Worksheet worksheet = worksheetPart.Worksheet;return worksheet;}// Given a worksheet, a column name, and a row index, gets the cell at the specified column and row.private static Cell GetSpreadsheetCell(Worksheet worksheet, string columnName, uint rowIndex){IEnumerable<Row> rows = worksheet.GetFirstChild<SheetData>().Elements<Row>().Where(r => r.RowIndex == rowIndex);if (rows.Count() == 0){// A cell does not exist at the specified row.return null;}IEnumerable<Cell> cells = rows.First().Elements<Cell>().Where(c => string.Compare(c.CellReference.Value, columnName + rowIndex, true) == 0);if (cells.Count() == 0){// A cell does not exist at the specified column, in the specified row.return null;}return cells.First();}// Given a column name, a row index, and a WorksheetPart, inserts a cell into the worksheet. // If the cell already exists, returns it. private static Cell InsertCellInWorksheet(string columnName, uint rowIndex, Worksheet worksheet/*WorksheetPart worksheetPart*/){//Worksheet worksheet = worksheetPart.Worksheet;SheetData sheetData = worksheet.GetFirstChild<SheetData>();string cellReference = columnName + rowIndex;// If the worksheet does not contain a row with the specified row index, insert one.Row row;if (sheetData.Elements<Row>().Where(r => r.RowIndex == rowIndex).Count() != 0){row = sheetData.Elements<Row>().Where(r => r.RowIndex == rowIndex).First();}else{row = new Row() { RowIndex = rowIndex };sheetData.Append(row);}// If there is not a cell with the specified column name, insert one. if (row.Elements<Cell>().Where(c => c.CellReference.Value == columnName + rowIndex).Count() > 0){return row.Elements<Cell>().Where(c => c.CellReference.Value == cellReference).First();}else{// Cells must be in sequential order according to CellReference. Determine where to insert the new cell.Cell refCell = null;foreach (Cell cell in row.Elements<Cell>()){if (string.Compare(cell.CellReference.Value, cellReference, true) > 0){refCell = cell;break;}}Cell newCell = new Cell() { CellReference = cellReference };row.InsertBefore(newCell, refCell);worksheet.Save();return newCell;}}// Given text and a SharedStringTablePart, creates a SharedStringItem with the specified text // and inserts it into the SharedStringTablePart. If the item already exists, returns its index.private static int InsertSharedStringItem(string text, SharedStringTablePart shareStringPart){// If the part does not contain a SharedStringTable, create it.if (shareStringPart.SharedStringTable == null){shareStringPart.SharedStringTable = new SharedStringTable();}int i = 0;foreach (SharedStringItem item in shareStringPart.SharedStringTable.Elements<SharedStringItem>()){if (item.InnerText == text){// The text already exists in the part. Return its index.return i;}i++;}// The text does not exist in the part. Create the SharedStringItem.shareStringPart.SharedStringTable.AppendChild(new SharedStringItem(new DocumentFormat.OpenXml.Spreadsheet.Text(text)));shareStringPart.SharedStringTable.Save();return i;}}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Text.RegularExpressions;
using Excel = Microsoft.Office.Interop.Excel;namespace OpenXmlTest
{class Program{public static void UseCommom(){Excel.Application excelApp = new Excel.Application();Excel.Workbook expWorkBookConfig = null;//EXCEL 产品配置文件 (中文)Excel.Workbooks expWorkBooks = null;//打开Excle文件 创建表格对象excelApp.Visible = false; excelApp.DisplayAlerts = false;try{expWorkBooks = excelApp.Workbooks;expWorkBookConfig = expWorkBooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);Excel.Worksheet sheet = expWorkBookConfig.Worksheets[1];for (int iLine = 1; iLine < 200; iLine++){for (char ch = 'A'; ch <= 'Z'; ch++){string str = string.Format("{0}", ch);Excel.Range ACell = sheet.get_Range(str + iLine.ToString(), System.Reflection.Missing.Value);ACell.Value2 = "TestTestTestTestTestTestTestTestTestTestTestTestTestTestTest";}}expWorkBookConfig.SaveAs(@"D:\OpenXmlTest\bin\Release\Commom.xlsx",System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value);expWorkBookConfig.Close();excelApp.Quit();}catch (System.Exception ex){Console.WriteLine(ex.Message);excelApp.Quit();expWorkBookConfig = null;excelApp = null;}GC.Collect();}public static void UseOpenXml(){TLExcel doc = new TLExcel();if (TLExcel.TLOK == doc.Create("OpenXml.xlsx")){Console.WriteLine("开始时间:" + DateTime.Now);for (int iLine = 1; iLine < 200; iLine++){for (char ch = 'A'; ch <= 'Z'; ch++){string str = string.Format("{0}", ch);doc.WriteCellValue(1, (uint)iLine, str, "TestTestTestTestTestTestTestTestTestTestTestTestTestTestTest");}}Console.WriteLine("结束时间:" + DateTime.Now);}doc.Close();}static void Main(string[] args){Console.WriteLine("OpenXml:");UseOpenXml();Console.WriteLine("Commom:");Console.WriteLine("开始时间:" + DateTime.Now);UseCommom();Console.WriteLine("结束时间:" + DateTime.Now);Console.ReadKey();}}
}
http://officeopenxml.com/anatomyofOOXML-xlsx.php
https://www.ecma-international.org/publications-and-standards/standards/ecma-376/

















