如何Word中用VBA打开Excel表格,读取其中的内容写入到Word
可以通过word的table对象对word表格进行操作。
下面的代码在Excel的Vba中运行,运行前先添加Microsoft Word XX.0 Object Library的引用,其中XX.0根据你安装的Office 版本不同而不同,一般来试Office Word 2003 是11.0,Office Word 2013 是15.0 。
Sub toWord()Dim wordApp As New Word.ApplicationwordApp.Visible = TrueDim wordDoc As Word.DocumentDim wordTable As Word.TableSet wordDoc = wordApp.Documents.Add '新建一个文档Set wordTable = wordDoc.Tables.Add(wordDoc.Range(), 1, 1, wdWord9TableBehavior, wdAutoFitWindow) '文档中插入一个表格Dim r As Long, c As LongFor r = 1 To ActiveSheet.UsedRange.Rows.CountIf r > wordTable.Rows.Count ThenwordTable.Rows.Add '表格插入行End IfFor c = 1 To ActiveSheet.UsedRange.Columns.CountIf c > wordTable.Columns.Count ThenwordTable.Columns.Add '表格插入列wordTable.Columns.AutoFitEnd IfwordTable.Cell(r, c).Range.Text = Cells(r, c) Next cNext rwordTable.AutoFitBehavior wdAutoFitWindowEnd Sub
我要用C#,NET 导出一个word文档。
文档内容只要一个表格。
楼上的 你能不能改写下这个例子啊? 我这个只能导出字符 不能导出表格 string title = "个人信息"; object titleLengh = title.Length; string first = "\n 公司最近需要利用C#对项目进行编程,其" + "中存在一个功能就是可自动生成WORD文档,但一直以来都" + "找不到什么好办法,无奈之下,只有自已学着写一个了."; object firstLengh = first.Length; string second = "\n 如果能真正生成WORD文档的好处有:"; object secondLengh = second.Length; string third = "\n1、根据数据库信息自动生成文档;"; object thirdLengh = third.Length; string forth = "\n2、免去书写文档之苦;"; object forthLengh = forth.Length; string fifth = "\n3、可以通过邮件方式传出文档。
"; object fifthLengh = fifth.Length; object missing; object zero = 0; object c = 10; object one = 1; object two = 2; object tree = 3; object four = 4; object five = 5; object six = 6; object seven = 7; object eight = 8; object nine = 9; object ten = 10; Object Nothing = System.Reflection.Missing.Value; Microsoft.Office.Interop.Word.ApplicationClass wa = new Microsoft.Office.Interop.Word.ApplicationClass(); Microsoft.Office.Interop.Word.Document WordDoc = wa.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing); missing = System.Reflection.Missing.Value; wa.Visible = true; wa.Documents.Add(ref missing, ref missing, ref missing, ref missing); Microsoft.Office.Interop.Word.Range myRange = wa.ActiveDocument.Range(ref zero, ref zero); object r = myRange; Microsoft.Office.Interop.Word.Paragraph p = wa.ActiveDocument.Paragraphs.Add(ref r); p.Range.InsertBefore(title); //p.Range.Font.Size = 1; Microsoft.Office.Interop.Word.Range titleRange = wa.ActiveDocument.Range(ref zero, ref titleLengh); //titleRange.Font.Size = 1; titleRange.Font.Name = "幼圆"; titleRange.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorBlue; //MessageBox.Show("NO.1"); //titleRange.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight; Microsoft.Office.Interop.Word.Range firstR = wa.ActiveDocument.Paragraphs[1].Range;//.Item(2).Range; Microsoft.Office.Interop.Word.Table table = WordDoc.Tables.Add(titleRange, 3, 3, ref Nothing, ref Nothing); r = firstR; p = wa.ActiveDocument.Paragraphs.Add(ref r); firstR.Font.Size = 40; firstR.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//在表格第一单元格中添加自定义的文字内容 table.Cell(1, 1).Range.Text = "lllll"; firstR.InsertAfter(first);//firstR.InsertParagraphAfter(); //firstR=wa.ActiveDocument.Paragraphs.Item(3).Range; firstR.InsertAfter(second); firstR.InsertAfter(third); firstR.InsertAfter(forth); firstR.InsertAfter(fifth); Context.Response.Write("成功");
MFC读取excel里面内容写入到TXT
这个是使用ODBC来完成的第一步:建立基于对话框的MFC工程,命名为MfctoExc;第二步:添加两个头文件到stdafx.h, #include #include 第三步:添加两个按钮控件和一个List Box控件,给List Box添加控制变量CListBox m_ExcelList;添加DDX_Control(pDX, IDC_LIST_BOX, m_ExcelList);第四步:给两个按钮添加两个功能函数,读写excelvoid CMfctoExcDlg::OnRead() {// TODO: Add your control notification handler code hereCDatabase database; CString sSql; CString sItem1, sItem2,sItem3; CString sDriver; CString sDsn; CString sFile,sPath;//获取主程序所在路径,存在sPath中GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer (); int nPos;nPos=sPath.ReverseFind ('\\');sPath=sPath.Left (nPos);sFile = sPath + "\\Demo.xls"; // 将被读取的Excel文件名 // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)" sDriver = GetExcelDriver(); if (sDriver.IsEmpty()) { // 没有发现Excel驱动 AfxMessageBox("没有安装Excel驱动!"); return; } // 创建进行存取的字符串 sDsn.Format("ODBC;DRIVER={%s};DSN=' ';DBQ=%s", sDriver, sFile); TRY { // 打开数据库(既Excel文件) database.Open(NULL, false, false, sDsn); CRecordset recset(&database); // 设置读取的查询语句. sSql = "SELECT Num,Name, Age " //设置索引顺序 "FROM Exceldemo " ; "ORDER BY Name "; // 执行查询语句 recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly); // 获取查询结果 while (!recset.IsEOF()) { //读取Excel内部数值 recset.GetFieldValue("Num", sItem1); recset.GetFieldValue("Name", sItem2); recset.GetFieldValue("Age", sItem3); //显示记取的内容 m_ExcelList.AddString( sItem1 + " --> "+sItem2+ " --> "+sItem3 ); // 移到下一行 recset.MoveNext(); } // 关闭数据库 database.Close(); } CATCH(CDBException, e) { // 数据库操作产生异常时... AfxMessageBox("数据库错误: " + e->m_strError); } END_CATCH;}void CMfctoExcDlg::OnWrite() {// TODO: Add your control notification handler code hereCDatabase database;CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动CString sExcelFile,sPath;CString sSql;//获取主程序所在路径,存在sPath中GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer ();int nPos;nPos=sPath.ReverseFind ('\\');sPath=sPath.Left (nPos);sExcelFile = sPath + "\\Demo.xls"; // 要建立的Excel文件TRY{ // 创建进行存取的字符串 sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile); // 创建数据库 (既Excel表格文件) if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ) { // 创建表结构(序号、姓名、年龄) sSql = "CREATE TABLE Exceldemo (Num Number,Name TEXT,Age NUMBER)";//可以用中文表示序号,姓名,年龄等 database.ExecuteSQL(sSql); // 插入数值 sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (1,'小西',24)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (2,'小东',22)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (3,'小朱',25)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (4,'小鸭',27)"; database.ExecuteSQL(sSql); } // 关闭数据库 database.Close();AfxMessageBox("Excel文件写入成功!");}CATCH_ALL(e){ TRACE1("Excel驱动没有安装: %s",sDriver);}END_CATCH_ALL;}第五步:添加成员函数CString CMfctoExcDlg::GetExcelDriver(){ char szBuf[2001]; WORD cbBufMax = 2000; WORD cbBufOut; char *pszBuf = szBuf; CString sDriver; // 获取已安装驱动的名称(涵数在odbcinst.h里) if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut)) return ""; // 检索已安装的驱动是否有Excel... do { if (strstr(pszBuf, "Excel") != 0) { //发现 ! sDriver = CString(pszBuf); break; } pszBuf = strchr(pszBuf, '\0') + 1; } while (pszBuf[1] != '\0'); return sDriver;}文件存储路径设置:CString filename, sExcelFile ;CFileDialog fileDlg (FALSE, "Path", filename,OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, "*.xls");if( fileDlg.DoModal()==IDOK) { sExcelFile = fileDlg.GetPathName(); // 要建立的Excel文件 CFileFind finder; BOOL bWorking = finder.FindFile(sExcelFile);//寻找文件if (bWorking)//如果已经存在文件,则删除 { CFile::Remove((LPCTSTR)sExcelFile); }}else return ;将变量写入Excel可以用下面的笨方法:for(int i=0;i<5;i++) { sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES ("; str0.Format("%d...
急急急急!word文档写完表格后怎么换行填下一项内容
例如上面的表格,表格下面没有回车符,无法下表格下面输入文字,可以通过下面的方法来设置:方法一:在表格下面双单击鼠标,即可出现回车符,这时就可以输入文字了,如图所示。
方法二:1、选中word中的表格;2、使用Crel+X快捷键,剪切;3、按回车键输入空行,再使用Ctrl+V (快捷键)粘贴表格在相应的 ,这进表格下面就有回车符,可以输入文字了。
excel编程问题(两个表格之间的复制粘贴)
sheet2的B2为:(1) =IF(OR(MOD(ROW(),2)<>0,MOD(COLUMN(),2)<>0),"",INDEX(Sheet1!$B$2:$B$65536,(ROW()/2-1)*3+COLUMN()/2)) 或(2) =IF(OR(MOD(ROW(),2)<>0,MOD(COLUMN(),2)<>0),"",INDEX(Sheet1!$B$2:$B$65536,(ROW()/2-1)*3+COLUMN()/2)&"") 然后再向右填充,向下填充,搞定! 也可将上面的$B$2:$B$65536换为你的表1中的B列的数据区域如:$B$2:$B$13,那么用(1)如果你的表2中还有其它数据,你可以在输入B2的公式后,复制-按ctrl,依次单击要用公式的单元格,如B2、D2、F2、B4、D4、F4、B6、D6、F6……-粘贴。
如何用C#提取Word,Excel等文件的文本
下面分别使用Spire.Doc和Spire.XLS来提取的文本。
提取Word文本(一)提取文段中的文本: //初始化文档并加载一个实例 Document document = new Document(); document.LoadFromFile(@"C:\Users\Administrator\Desktop\2017诺贝尔奖.docx"); //初始化一个StringBuilder类新实例 StringBuilder sb = new StringBuilder(); //遍历section及段落,将段落中的文本保存到StringBuilder实例 foreach (Section section in document.Sections) { foreach (Paragraph paragraph in section.Paragraphs) { sb.AppendLine(paragraph.Text); } } //将提取的文档保存为文本格式 File.WriteAllText("Extract.txt", sb.ToString());(二)提取文本框中的文本 //初始化文档并加载一个实例 Document document = new Document(); document.LoadFromFile(@"C:\Users\Administrator\Desktop\2017诺贝尔奖.docx"); //诊断文档是否含有文本框 if (document.TextBoxes.Count > 0) { //初始化一个StreamWriter类并保存提取的文档 using (StreamWriter sw = File.CreateText("result.txt")) { //从文本框提取文档 foreach (Section section in document.Sections) { foreach (Paragraph p in section.Paragraphs) { foreach (DocumentObject obj in p.ChildObjects) { if (obj.DocumentObjectType == DocumentObjectType.TextBox) { TextBox textbox = obj as TextBox; foreach (DocumentObject objt in textbox.ChildObjects) { if (objt.DocumentObjectType == DocumentObjectType.Paragraph) { sw.Write((objt as Paragraph).Text); } } } } } } } }提取Excel文本 //创建一个工作簿并加载Excel工作表 Workbook workbook = new Workbook(); workbook.LoadFromFile(@"..\ExceltoTxt.xls"); //获取首个工作表,并保存为txt格式 Worksheet sheet = workbook.Worksheets[0]; sheet.SaveToFile("ExceltoTxt.txt", " ", Encoding.UTF8);
怎样做EXCEL表格啊?还有做表格时键盘的快捷键有哪些啊?
1. 建议阅读excel表格相关的书籍,并照着操作一遍。
2. 在网上看相关的视频,并学习其中的操作。
3. 实际自己摸索,从基本的操作逐渐提高。
常用快捷键:(有很多,这里只列出部分比较常用的)移动到当前数据区域的边缘:CTRL+ 箭头键 移动到行首:HOME 移动到工作表的开头:CTRL+HOME 移动到工作表的最后一个单元格。
:CTRL+END 向下移动一屏:PAGE DOWN 向上移动一屏:PAGE UP 向右移动一屏:ALT+PAGE DOWN 向左移动一屏:ALT+PAGE UP 移动到工作簿中下一个工作表:CTRL+PAGE DOWN 移动到工作簿中前一个工作表:CTRL+PAGE UP 移动到下一工作簿或窗口:CTRL+F6 或 CTRL+TAB 移动到前一工作簿或窗口:CTRL+SHIFT+F6 移动到已拆分工作簿中的下一个窗格:F6 移动到被拆分的工作簿中的上一个窗格:SHIFT+F6 滚动并显示活动单元格:CTRL+BACKSPACE 显示“定位”对话框:F5 显示“查找”对话框:SHIFT+F5 重复上一次“查找”操作:SHIFT+F4 在保护工作表中的非锁定单元格之间移动:TAB
c#读取表格中数据时速度问题
private void btnSelect_Click(object sender, EventArgs e){string m_FileName = "";string m_Sql = "select * FROM [Sheet1$]";OpenFileDialog myOpenFile = new OpenFileDialog();myOpenFile.InitialDirectory = "c:\\";myOpenFile.Filter = "Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx";myOpenFile.RestoreDirectory = true;myOpenFile.FilterIndex = 1;if (myOpenFile.ShowDialog() == DialogResult.OK){m_FileName = myOpenFile.FileName;textBoxFileName.Text = m_FileName;}else{textBoxFileName.Text = "";return;}myDataTable.Clear();myDataTable = PubPara.ExcelToDataTable(m_FileName, m_Sql);if (myDataTable == null) return;dataGridViewArticle.DataSource = myDataTable;dataGridViewArticle.RowHeadersWidth = 25;dataGridViewArticle.Columns[2].Width = 200;dataGridViewArticle.Columns[13].Width = 200;}读取比较快,但是看你读取数据怎么保存了
转载请注明出处51数据库 » c word表格写入内容
内涵的老男人