C# 读写xml、excel、word、access

这里只是起个头,不做深入展开,方便以后用到参考

读写xml,主要使用.net  的xml下的document

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

public static  void GetAreaCodes(string path,out string[] areaCodes ,out string[] pointCodes){if (File.Exists(path)){try{XmlDocument xml = new XmlDocument();xml.LoadXml(path);List<string> areas = new List<string>();var areanode = xml.SelectSingleNode("areaRoot");var elements = areanode.ChildNodes;foreach (var element in elements){areas.Add((element as XmlElement).InnerXml);}List<string> points = new List<string>();var pointnode = xml.SelectSingleNode("pointRoot");elements = areanode.ChildNodes;foreach (var element in elements){points.Add((element as XmlElement).InnerXml);}areaCodes = areas.ToArray();pointCodes = points.ToArray();}catch{pointCodes = new[] { "GPS点", "建屋", "等级公路" };areaCodes = new[] { "砖房", "阳台", "建屋", "地类界", "变电房" };}}else{pointCodes = new[] { "GPS点", "建屋", "等级公路" };areaCodes = new[] { "砖房", "阳台", "建屋", "地类界", "变电房" };}}public static void WriteAreaCodes(string path, string[] areaCodes, string[] pointCodes){try{XmlDocument xml=new XmlDocument();XmlDeclaration xmlDeclaration = xml.CreateXmlDeclaration("1.0", "utf-8","yes");XmlNode Codes = xml.CreateElement("Codes");xml.AppendChild(xmlDeclaration);xml.AppendChild(Codes);XmlNode areaRoot = xml.CreateElement("areaRoot");foreach (var str in areaCodes){XmlElement areaCode = xml.CreateElement("areaCode");areaCode.InnerXml=str;areaRoot.AppendChild(areaCode);}Codes.AppendChild(areaRoot);XmlNode pointRoot = xml.CreateElement("pointRoot");foreach (var str in pointCodes){XmlElement pointCode = xml.CreateElement("pointCode");pointCode.InnerXml=str;pointRoot.AppendChild(pointCode);}Codes.AppendChild(pointRoot);xml.Save(path);}catch (Exception ex){throw ex;}}

读写excel,调用com,读写比较慢

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using SDataTable = System.Data.DataTable;
using Microsoft.Office.Interop.Excel;
using System.Data;
using System.Reflection;

public class CExcel{private string filepath = "";private Microsoft.Office.Interop.Excel.Application excel;private Workbook workbook = null;public CExcel(){excel = new Application();excel.Visible = false;excel.DisplayAlerts = false;}/// <summary>/// 打开Excel文件 /// </summary>/// <param name="filename">文件名</param>public void OpenExcel(string filename){workbook = excel.Application.Workbooks.Open(filename);}/// <summary>/// 获取一个sheet/// </summary>/// <param name="index">sheet索引</param>/// <param name="sheetname">sheet名,默认为空,为空以第一个参数为准,否则以名为准</param>/// <returns>返回worksheet对象</returns>public Worksheet GetSheet(int index,string sheetname=null){if (workbook == null) return null;var sheet = workbook.Worksheets.get_Item(index);if (sheetname == null) return sheet;foreach (var sh in workbook.Worksheets){sheet = sh as Worksheet;if (sheet.Name == sheetname) break;}return sheet;}/// <summary>/// 关闭workbook/// </summary>public void Closeworkbook(){if (workbook != null) workbook.Close();}/// <summary>/// 释放excel对象/// </summary>public void Dispose(){excel.Quit();}/// <summary>/// 读取一个sheet内容/// </summary>/// <param name="psheet"></param>/// <param name="index"></param>/// <returns></returns>public SDataTable GetTableFromSheet(Worksheet psheet, int index = 0){int rowcount = psheet.UsedRange.Cells.Rows.Count;int colcount = psheet.UsedRange.Columns.Count;Range range;SDataTable dt = new SDataTable();dt.TableName = psheet.Parent.Name + psheet.Name;DataColumn dc;int ColumnID = 1;int col = 0;while (col <= colcount){dc = new DataColumn();dc.DataType = typeof(string);dc.ColumnName = col.ToString();dt.Columns.Add(dc);col++;}for (int iRow = 1; iRow <= rowcount; iRow++){var dr = dt.NewRow();for (int iCol = 1; iCol <= colcount; iCol++){range = psheet.Cells[iRow, iCol] as Range;string content = "";if (range.Value != null){content = range.Value.ToString();}dr[iCol - 1] = content;}dt.Rows.Add(dr);}return dt;}/// <summary>/// 导出excel/// </summary>/// <param name="table"></param>/// <param name="filename"></param>public void Datatabletoexcel(string filename, params SDataTable[] tables){excel.DefaultFilePath = "";excel.DisplayAlerts = true;excel.SheetsInNewWorkbook = 1;var book = excel.Workbooks.Add(true);foreach (var table in tables){var result = book.Worksheets.Add();var sheet=book.ActiveSheet;sheet.Name = table.TableName;int rownum = table.Rows.Count;int colnum = table.Columns.Count;int rowindex = 1;int columnindex = 0;int row = 0;int col = 0;for (int i = 0; i < rownum; i++){col = 0;for (int j = 0; j < colnum; j++){sheet.Cells[row + 1, col + 1] = table.Rows[i][j] == null ? "" : table.Rows[i][j].ToString();col++;}row++;}#region//合并单元格//Range rangeLecture = sheet.Range[sheet.Cells[1, 1], sheet.Cells[2, 1]];//左上和右下//rangeLecture.MergeCells = true;#endregion}excel.DisplayAlerts = false;book.SaveAs(filename);book.Close();System.Runtime.InteropServices.Marshal.ReleaseComObject(book);book = null;GC.Collect();GC.WaitForPendingFinalizers();}/// <summary>设置字体/// </summary>/// <param name="sheet"></param>void SetFont(Worksheet sheet){excel.StandardFont = "宋体";excel.StandardFontSize = 9;//sheet.Range.AutoFit();//自适应//sheet.Range[sheet.Cells[1, 1], sheet.Cells[4, 27]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//居中对齐//sheet.Range[sheet.Cells[1, 1], sheet.Cells[rowindex, 27]].Borders.LineStyle = 1;//设置边框
}}

用NPOI 读写excel,速度比com快

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NPOI.HSSF;
using NPOI.HSSF.UserModel;
using System.IO;
using NPOI.SS.UserModel;
using System.Data;


public class NExcel{private HSSFWorkbook hssfworkbook;private string filepath;public void Open(string file){using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))  {  hssfworkbook = new HSSFWorkbook(fs);  } }/// <summary>/// 获取sheet/// </summary>/// <param name="index"></param>/// <param name="sheetname"></param>/// <returns></returns>public ISheet getSheet(int index,string sheetname=null){if(hssfworkbook==null)return null;ISheet sheet;if(sheetname==null){sheet =hssfworkbook.GetSheetAt(index);}else{sheet=hssfworkbook.GetSheet(sheetname);}return sheet;}/// <summary>/// 读取excel文件/// </summary>/// <param name="sheet"></param>/// <returns></returns>public DataTable getData(ISheet sheet){System.Collections.IEnumerator rows = sheet.GetRowEnumerator();  DataTable dt = new DataTable();  for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)  {  dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());  }  while (rows.MoveNext())  {if (rows.Current == null) continue ;HSSFRow row = (HSSFRow)rows.Current;DataRow dr = dt.NewRow();  for (int i = 0; i < row.LastCellNum-1; i++)  {var cell = row.GetCell(i);if (cell != null) cell.SetCellType(CellType.String);dr[i] = cell == null ? null : cell.ToString();}  dt.Rows.Add(dr);  }  return dt;  }/// <summary>/// 写excel文件/// </summary>/// <param name="filePath"></param>/// <param name="dts"></param>public void WriteExcel( string filePath,params DataTable[] dts){if (string.IsNullOrEmpty(filePath)) return;NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();foreach (var dt in dts){if (null == dt && dt.Rows.Count==0)continue;NPOI.SS.UserModel.ISheet sheet = book.CreateSheet(dt.TableName);NPOI.SS.UserModel.IRow row = sheet.CreateRow(0);for (int i = 0; i < dt.Columns.Count; i++){row.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);}for (int i = 0; i < dt.Rows.Count; i++){NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(i + 1);for (int j = 0; j < dt.Columns.Count; j++){row2.CreateCell(j).SetCellValue(Convert.ToString(dt.Rows[i][j]));}}}// 写入到客户端  using (System.IO.MemoryStream ms = new System.IO.MemoryStream()){book.Write(ms);using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)){byte[] data = ms.ToArray();fs.Write(data, 0, data.Length);fs.Flush();}book = null;}}}

读写word 调用com

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Word;
using MSWord = Microsoft.Office.Interop.Word;


public  class CSWord{private Application wordApp = null;private Document wordDoc = null;private string docPath = null;private object Nothing = System.Reflection.Missing.Value;public  CSWord(string path,bool isOpen){try{docPath = path;Object Nothing = System.Reflection.Missing.Value;//创建Word文档if (isOpen){wordApp = new MSWord.Application();wordDoc = wordApp.Documents.Open(path);}else{wordApp = new MSWord.Application();wordDoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);}wordApp.Visible = false;}catch {throw new Exception("创建word对象失败");}}public void SetFont(){wordApp.Selection.Font.Bold = 0;wordApp.Selection.Font.Italic = 0;wordApp.Selection.Font.Subscript = 0;}public void SetFontName(string strType){wordApp.Selection.Font.Name = strType;}public void SetFontSize(int nSize){wordApp.Selection.Font.Size = nSize;}public void SetAlignment(WdParagraphAlignment align){wordApp.Selection.ParagraphFormat.Alignment = align;}public void GoToTheEnd(){object unit;unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;wordApp.Selection.EndKey(ref   unit, ref   Nothing);}public void GoToTheBeginning(){object unit;unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;wordApp.Selection.HomeKey(ref   unit, ref   Nothing);}/// <summary>/// 添加文字/// </summary>/// <param name="txtContent"></param>/// <param name="Bold"></param>/// <param name="size"></param>public void AddText(string txtContent,int Bold=0,int size=14){//wordApp.Selection.Font.Spacing = 10;//字符间隔
wordApp.Selection.Font.Bold = Bold;wordApp.Selection.Font.Size = size;wordApp.Selection.TypeText(txtContent);    wordApp.Selection.TypeParagraph();}/// <summary>/// 添加图片/// </summary>/// <param name="filepath"></param>public void AddPic(string filepath){object range = wordDoc.Paragraphs.Last.Range;//定义该图片是否为外s部链接object linkToFile = false;//默认//定义插入的图片是否随word一起保存object saveWithDocument = true;//向word中写入图片wordDoc.InlineShapes.AddPicture(filepath, ref Nothing, ref Nothing, ref Nothing);object unite = Microsoft.Office.Interop.Word.WdUnits.wdStory;wordApp.Selection.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphCenter;//居中显示图片//wordDoc.InlineShapes[1].Height = 130;//wordDoc.InlineShapes[1].Width = 200;wordDoc.Content.InsertAfter("\n");wordApp.Selection.EndKey(ref unite, ref Nothing);wordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;wordApp.Selection.Font.Size = 10;//字体大小wordApp.Selection.TypeText("图1 测试图片\n");}/// <summary>/// 添加表/// </summary>public void AddTable(){int tableRow = 6;int tableColumn = 6;//定义一个word中的表格对象MSWord.Table table = wordDoc.Tables.Add(wordApp.Selection.Range, tableRow, tableColumn, ref Nothing, ref Nothing);wordDoc.Tables[1].Cell(1, 1).Range.Text = "列\n行";for (int i = 1; i < tableRow; i++){for (int j = 1; j < tableColumn; j++){if (i == 1){table.Cell(i, j + 1).Range.Text = "Column " + j;}if (j == 1){table.Cell(i + 1, j).Range.Text = "Row " + i;}table.Cell(i + 1, j + 1).Range.Text = i + "行 " + j + "列";}}//添加行table.Rows.Add(ref Nothing);table.Rows[tableRow + 1].Height = 45;//向新添加的行的单元格中添加图片//string FileName = "d:\\kk.jpg";//图片所在路径object LinkToFile = false;object SaveWithDocument = true;object Anchor = table.Cell(tableRow + 1, tableColumn).Range;//选中要添加图片的单元格//wordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);//wordDoc.Application.ActiveDocument.InlineShapes[1].Width = 75;//图片宽度//wordDoc.Application.ActiveDocument.InlineShapes[1].Height = 45;//图片高度// 将图片设置为四周环绕型//MSWord.Shape s = wordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();//s.WrapFormat.Type = MSWord.WdWrapType.wdWrapSquare;//设置table样式table.Rows.HeightRule = MSWord.WdRowHeightRule.wdRowHeightAtLeast;table.Rows.Height = wordApp.CentimetersToPoints(float.Parse("0.8"));table.Range.Font.Size = 10.5F;table.Range.Font.Bold = 0;table.Range.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphCenter;table.Range.Cells.VerticalAlignment = MSWord.WdCellVerticalAlignment.wdCellAlignVerticalBottom;//设置table边框样式table.Borders.OutsideLineStyle = MSWord.WdLineStyle.wdLineStyleDouble;table.Borders.InsideLineStyle = MSWord.WdLineStyle.wdLineStyleSingle;table.Rows[1].Range.Font.Bold = 1;table.Rows[1].Range.Font.Size = 12F;table.Cell(1, 1).Range.Font.Size = 10.5F;wordApp.Selection.Cells.Height = 40;//所有单元格的高度for (int i = 2; i <= tableRow; i++){table.Rows[i].Height = 20;}table.Cell(1, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;table.Cell(1, 1).Range.Paragraphs[2].Format.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;table.Columns[1].Width = 50;for (int i = 2; i <= tableColumn; i++){table.Columns[i].Width = 75;}//添加表头斜线,并设置表头的样式table.Cell(1, 1).Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown].Visible = true;table.Cell(1, 1).Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown].Color = Microsoft.Office.Interop.Word.WdColor.wdColorGray60;table.Cell(1, 1).Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown].LineWidth = Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth050pt;//表格边框//表格内容行边框
            SetTableBorderStyle(table, MSWord.WdBorderType.wdBorderHorizontal, MSWord.WdColor.wdColorGray20, MSWord.WdLineWidth.wdLineWidth025pt);//表格内容列边框
            SetTableBorderStyle(table, MSWord.WdBorderType.wdBorderVertical, MSWord.WdColor.wdColorGray20, MSWord.WdLineWidth.wdLineWidth025pt);SetTableBorderStyle(table, MSWord.WdBorderType.wdBorderLeft, MSWord.WdColor.wdColorGray50, MSWord.WdLineWidth.wdLineWidth050pt);SetTableBorderStyle(table, MSWord.WdBorderType.wdBorderRight, MSWord.WdColor.wdColorGray50, MSWord.WdLineWidth.wdLineWidth050pt);SetTableBorderStyle(table, MSWord.WdBorderType.wdBorderTop, MSWord.WdColor.wdColorGray50, MSWord.WdLineWidth.wdLineWidth050pt);SetTableBorderStyle(table, MSWord.WdBorderType.wdBorderBottom, MSWord.WdColor.wdColorGray50, MSWord.WdLineWidth.wdLineWidth050pt);//合并单元格table.Cell(4, 4).Merge(table.Cell(4, 5));//横向合并table.Cell(2, 3).Merge(table.Cell(4, 3));//纵向合并
}public void OpenModel(string modelPath){object ModelName = modelPath;wordDoc = wordApp.Documents.Open(ref ModelName);//打开word模板//下面操作模板。。。。
}private void SetTableBorderStyle(Table table1,MSWord.WdBorderType bdType,MSWord.WdColor color,MSWord.WdLineWidth width){table1.Borders[bdType].Visible = true;table1.Borders[bdType].Color = color;table1.Borders[bdType].LineWidth = width;}/// <summary>/// 保存/// </summary>/// <returns></returns>public bool Save(){try{object path = docPath;object format = MSWord.WdSaveFormat.wdFormatDocument;wordDoc.SaveAs(ref path, ref format);wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);return true;}catch{return false;}}/// <summary>/// 替换/// </summary>/// <param name="strOldText"></param>/// <param name="strNewText"></param>public void Replace(string strOldText, string strNewText){this.wordApp.Selection.Find.ClearFormatting();//移除Find的搜索文本和段落格式设置  wordApp.Selection.Find.Text = strOldText;//需要查找的字符if (wordApp.Selection.Find.Execute())//查找字符
            {wordApp.Selection.TypeText(strNewText);//在找到的字符区域写数据
            }}/// <summary>  ///查找字符 /// </summary>  /// <returns></returns>  public bool  FindStr(string str){Find find = wordApp.Selection.Find;Object findText;Object matchCase = Type.Missing;Object matchWholeWord = Type.Missing;Object matchWildcards = Type.Missing;Object matchSoundsLike = Type.Missing;Object matchAllWordForms = Type.Missing;Object forward = true;Object wrap = WdFindWrap.wdFindStop;Object format = Type.Missing;Object replaceWith = Type.Missing;Object replace = Type.Missing;Object matchKashida = Type.Missing;Object matchDiacritics = Type.Missing;Object matchAlefHamza = Type.Missing;Object matchControl = Type.Missing;if ((str == "") || (str == string.Empty))findText = find.Text;elsefindText = str;find.ClearFormatting();return find.Execute(ref findText, ref matchCase, ref matchWholeWord,ref matchWildcards, ref matchSoundsLike, ref matchAllWordForms,ref forward, ref wrap, ref format, ref replaceWith, ref replace,ref matchKashida, ref matchDiacritics, ref matchAlefHamza,ref matchControl);  }  /// <summary>  /// 保存成HTML  /// </summary>  /// <param name="strFileName"></param>  public void SaveAsHtml(string strFileName){Type wordType = wordApp.GetType();object missing = System.Reflection.Missing.Value;object fileName = strFileName;object Format = (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML;wordDoc.SaveAs(ref   fileName, ref   Format, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing,ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing);}public void Dispose(){if (wordDoc != null){wordDoc.Close();}if (wordApp != null){wordApp.Quit();}}private void test(){Paragraphs pgs = wordApp.Selection.Paragraphs;foreach (Paragraph pg in pgs){Console.WriteLine(pg.Range.Text);}}}

读写access ,调用OleDb

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.IO;
using System.Data;namespace CSharpTest
{public class CAccessClass{private OleDbConnection DbConnection;private const string connect = "provider=microsoft.jet.oledb.4.0;Data Source=";private static void log(string msg){using (StreamWriter sw = new StreamWriter("log.txt", true)){sw.WriteLine(String.Format("{0}:{1}", DateTime.Now.ToString(), msg));}}public CAccessClass(string Path){DbConnection = new OleDbConnection(connect + Path);}public DataTable SelectData(string sql){try{DbConnection.Open();var myadapter = new OleDbDataAdapter();myadapter.SelectCommand = new OleDbCommand(sql, DbConnection);DataSet ds = new DataSet();myadapter.Fill(ds);return ds.Tables[0];}catch (Exception ex){return null;}finally{DbConnection.Close();}}public int Delete(string sql){try{DbConnection.Open();var cmd = new OleDbCommand(sql, DbConnection);return cmd.ExecuteNonQuery();}catch (Exception ex){return 0;}finally{DbConnection.Close();}}public static void Test(string path=null){if(path==null) path = @"D:\WORK\Project\苗尾\BGKDB.MDB";CAccessClass cac = new CAccessClass(path);string sql = "select * from Sensor where SensorType='钢筋计'";var table = cac.SelectData(sql);for (int i = 0; i < table.Rows.Count; i++){for (int j = 0; j < table.Columns.Count; j++){Console.Write(table.Rows[i][j]+" ");}Console.WriteLine();}Console.WriteLine(String.Format("获取到{0}条数据", table.Rows.Count));}}
}

上边调用com接口写法不够优雅,这里有动态类型写,会好看点

获取office程序的com对象:

        dynamic GetActiveObject(string key){try{dynamic app = System.Runtime.InteropServices.Marshal.GetActiveObject(key);if (app != null)return app;}catch{ }return null;}//这里是获取已经打开的office实例,如果没有运行的office实例,可以直接创建//key可以上上边的progid也可以是CLSID

//var type = Type.GetTypeFromProgID(key);
//app = Activator.CreateInstance(type);

key是程序注册的prog,ms对应microsoft ,ki对应wps

        const string msWord = "Word.Application";const string kiWord = "KWPS.Application";const string msExcel = "Excel.Application";const string kiExcel = "KET.Application";const string msPPT = "PowerPoint.Application";const string kiPPT = "KWPP.Application";

因为两家的com对象接口基本一样·所以换下key基本就可以两家通用了

打开word写内容:

instance 是上边构造的对象,这里是在word最后加一行内容

        void WriteWord(dynamic instance,string path){dynamic word = instance;try{word.Visible = true;dynamic documents = word.Documents;dynamic doc = documents.Open(path);dynamic lr = doc.Paragraphs.Last.Range;var msg = string.Format("这是添加一行数据{0}", DateTime.Now.ToString()) + Environment.NewLine;Console.WriteLine(msg);lr.Text += msg;doc.Close(-1);word.Quit();}catch (Exception ex){Console.WriteLine(string.Format("err:{0},{1}", ex.Message, ex.StackTrace));monitor.Set();}}

打开excel写内容,这里是在第一列的最后一行加一行数据

        void WriteExcel(dynamic instance, string path){dynamic excel = instance;try{excel.Visible = true;dynamic books = excel.Workbooks;dynamic book = books.Open(path);dynamic sheet = book.Sheets(1);var row = sheet.UsedRange.Rows.Count + 1;var msg = string.Format("这是添加一行数据{0}", DateTime.Now.ToString()) + Environment.NewLine;var range = sheet.Cells[row, 1];range.Activate();range.Value = msg;Console.WriteLine(msg);Thread.Sleep(1000);book.Close(-1);excel.Quit();}catch (Exception ex){Console.WriteLine(string.Format("err:{0},{1}", ex.Message, ex.StackTrace));monitor.Set();}}

ppt

 dynamic ppt = instance;try{ppt.Visible = true;dynamic Presentations = ppt.Presentations;dynamic Presentation = Presentations.Open(path);var msg = string.Format("这是添加一页数据{0}", DateTime.Now.ToString()) + Environment.NewLine;var Slides = Presentation.Slides;var cnt = Presentation.Slides.Count;dynamic layout;if (cnt != 0){layout = Slides[cnt].CustomLayout;}else{var Master = Presentation.SlideMaster;layout = Master.CustomLayouts(1);}AsyncAppend(cnt.ToString());var sl = Slides.AddSlide(cnt + 1, layout);sl.Select();var shapes = sl.Shapes;dynamic title;title = shapes.Title;if(title==null)title = shapes.AddTitle();title.TextFrame.TextRange.Text = msg;AsyncAppend(msg);Presentation.Save();Presentation.Close();if(chkQuit.Checked){ppt.Quit();}Thread.Sleep(1000);}catch (Exception ex){AsyncAppend(string.Format("err:{0},{1}", ex.Message, ex.StackTrace));monitor.Set();}

转载于:https://www.cnblogs.com/onegarden/p/5895652.html

C# 读写xml、excel、word、ppt、access相关推荐

  1. 好用到爆的Python自动化办公教程pdf,Python × Excel × Word × PPT 一次搞定

    在这个自动化时代,我们有很多重复无聊的工作要做.想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松.那么在本文中,我将向您介绍一个好用到爆的Python自动化办公教程pdf,P ...

  2. 好用到爆的Python自动化办公教程,Python × Excel × Word × PPT 一次解决

    好用到爆的Python自动化办公教程,Python × Excel × Word × PPT 一次解决 大家好,我是黄伟

  3. ChatGPT处理Excel Word PPT

    探索ChatGPT,协助工作学习创作.公众号「阿杰与AI」回复AI,加入社群,一同探讨,一同成长,比他人更进一步. 我们一起维护一个完全免费开源知识库. 1.AI.OpenAI.MidJourney发 ...

  4. HTML实现在线预览Excel,word,ppt

    使用office提供的在线预览功能 https://view.officeapps.live.... src后面接你需要预览的文件下载地址. 如果不能实现预览功能,提示报错 请检查http返回的Con ...

  5. unity打开Excel/Word/PPT

    今天跟大家分享一个unity如何打开手机本机存储卡的word和excel和ppt文件 将上面的三个方法与按钮绑定,至此unity部分代码写完,下面就是Eclipse中jar包的生成 下面在我的电脑上建 ...

  6. excel,word,ppt,pdf,swf 文件互相转换

    转自:  http://www.cnblogs.com/wolf-sun/p/3569960.html 引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案 ...

  7. java利用第三方jar实现excel,word,ppt,txt转pdf格式

    最近项目有文件模块的上传预览功能,比如把word文档上传,以后点击可以预览.采用的思路为:文件上传到服务器,然后获取转换成对应的新的PDF文件,然后读取PDF文件.本文着重实现文档上传然后转为PDF. ...

  8. ●●教你如何在鼠标右键中添加excel,word,ppt的快捷方式

    有些简版的 OFFICE2003 ,右键的新建菜单中没有 " 新建 WORD 文档 " .在网上搜了好多的资料都是无效的,下面是一项编辑注册表的信息,把横线中的信息复制的记事本中, ...

  9. Windows中PDF TXT Excel Word PPT等Office文件在预览窗格无法预览的终级解决方法大全

    切记:以上方法均会对注册表进行修改,一定要先备份整个注册表,以防万一,避免导致系统错误 一.问题症状或错误复现: 1.首先要打开 文件资源管理器的 文件 预览窗格 2.然后在文件资源管理器的右边就会显 ...

  10. outlook邮箱收到的附件(excel, word, ppt)不能正常打开的解决办法

    有时候从outlook收下来的附件,如exel.word.ppt不知道怎么回事突然都不能正常打开了,一打开就提示如下信息: 点击repair后还是不能打开,弹出如下对话框: 这里有两种方法可以打开文件 ...

最新文章

  1. R语言ggplot2可视化:可视化人口金字塔图、人口金字塔显示不同性别不同年龄段的人口数,是了解人口组成的最优可视化方法、人口金字塔图可以用来表示按体积排序的群体的分布、形成漏斗结构
  2. 【整理】Linux驱动中,probe函数何时被调用
  3. 文件夹差异文件对比工具 meld
  4. 数据包构造分析工具Hping3常用命令集合大学霸IT达人
  5. Linux minilogd占用内存过高及开机启动项修改
  6. golang sync.map
  7. android 进程
  8. [摘抄]〈测试之美〉读后感
  9. python基础入门第0天
  10. 添加native和java系统服务
  11. HTML5 前端原生 WebSocket 通信
  12. Sakai Demo搭建及遇到的问题汇总
  13. 用c语言双向循环链表,C语言实现双向循环链表
  14. Gradle编译时,assets文件未打包进apk
  15. 电脑技巧:加装SSD固态硬盘注意事项,电脑速度超流畅
  16. 边缘计算机的概念和应用,边缘计算发展前景
  17. 【转载】用Pwnage + Redsnow 制作完美越狱固件
  18. jmeter beanshell关于小数参数定义转化
  19. android 微信签名,Android微信签名知识的总结
  20. Fortran和C/C++混合编程学习笔记(一):编译链接

热门文章

  1. 新闻人物言论自动提取
  2. ESP8266-Arduino编程实例-BH1750FVI环境光传感器驱动
  3. SAP ABAP BDC录屏 数据导入和检验-实例
  4. 京东怎么打单发货,智能店长一键打单
  5. 此情可待的伤感爱情日志分享:失去你的那一刻,我的世界不再光明
  6. PAT 1072 开学寄语
  7. android 环信集成demo,集成环信即时通讯(导入demo到AndroidStudio)
  8. MPI_Bcast与MPI_Comm_split配合,实现行广播或列广播
  9. 视频点播开发者实战:视频水印时间线,防模糊处理
  10. STM32标准库及的Keil软件包下载