
using System;
using SystemCollectionsGeneric;
using SystemText;
using MicrosoftOfficeInteropExcel;
using SystemWindowsForms;
namespace InnderWord
{
public class ExcelEmbed:OfficeBase
{
public ExcelEmbed()
{
}
private int HandleId = 0;
private ApplicationClass exClass;
private Workbook wkBook;
private IntPtr exWnd = IntPtrZero;
private string FileName;
private void exClass_WorkbookBeforeClose(Workbook wkBook, ref bool bCancel)
{
}
/// <summary>
/// 加载word文件
/// </summary>
/// <param name="fileName">文件路径</param>
/// /// <param name="handleId">父窗口句柄ID</param>
public void LoadFile(string fileName, int handleId)
{
try
{
if (exClass == null)
{
exClass = new ApplicationClass();
}
FileName = fileName;
HandleId = handleId;
exClassCommandBarsAdaptiveMenus = false;
exClassWorkbookBeforeClose +=new AppEvents_WorkbookBeforeCloseEventHandler(exClass_WorkbookBeforeClose);
//exClassdocum
if (wkBook != null)
{
exClassWorkbooksClose();
}
///加载文档
if (exWnd == IntPtrZero)
{
exWnd = WinAPIFindWindow("XLMAIN", null);
WinAPISetParent(exWndToInt32(), handleId);
//exClassWorkbooksAdd(true);
object filename = fileName;
object newTemplate = false;
object docType = 0;
object readOnly = true;
object isVisible = true;
object MissingValue=SystemReflectionMissingValue;
if (exClass != null && exClassWorkbooks != null)
{
wkBook =exClassWorkbooksOpen(fileName,
MissingValue, MissingValue,MissingValue, MissingValue,
MissingValue, MissingValue,MissingValue,MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue, MissingValue, MissingValue);
}
if (wkBook == null)
{
//throw new Exception("Word文档加载失败!");
}
}
SetExcelStyle(handleId);
//wkBookSendForReview();
//wkBookSendForReview();
// wkBookSheetBeforeDoubleClick+=new WorkbookEvents_SheetBeforeDoubleClickEventHandler(wkBook_SheetBeforeDoubleClick);
//wkBookEndReview();
//wkBookActivate();
// wkBookCanCheckIn();
// wkBookCheckIn();
//wkBookExclusiveAccess();
//wkBookForwardMailer();
// wkBookNewWindow();
//wkBookRoute();
// wkBookWorksheetsApplicationActivateMicrosoftApp();
//SetCommandBars();
//((Worksheet)exClassWorkbooks[1]Worksheetsget_Item(1))get_Range("A1", "B2")Value = "";
// WinAPISendMessage(exWnd, WM_KEYDOWN, 65, 0);
// WinAPISendMessage(exWnd, WM_KEYUP, 65, 0);
//WinAPImouse_event(WinAPIMOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
//SystemThreadingThreadSleep(100);
// WinAPImouse_event(WinAPIMOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
//IntPtr sheetWnd = WinAPIFindWindow("XLDESK", null);//"XLDESK"
//WinAPISendMessage(sheetWnd, WM_KEYDOWN, 65, 0);
//WinAPISendMessage(sheetWnd, WM_KEYUP, 65, 0);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 设置打开word文档的样式
/// </summary>
/// <param name="exClass"></param>
private void SetExcelStyle(int handleId)
{
if (exClass != null)
{
//exClassActiveWindowDisplayHorizontalScrollBar = false;
//exClassActiveWindowDisplayFormulas = false;
//exClassActiveWindowDisplayGridlines = false;
//exClassActiveWindowDisplayHeadings = false;
//exClassActiveWindowDisplayOutline = false;
//exClassActiveWindowDisplayRightToLeft = false;
//exClassActiveWindowDisplayZeros = false;
//exClassActiveWindowDisplayVerticalScrollBar = false;
// exClassActiveWorkbookAutoUpdateSaveChanges = true;
//exClassAutoCorrect =
//exClassAutoFormatAsYouTypeReplaceHyperlinks = true;
// exClassAskToUpdateLinks = true;
//exClassCalculationInterruptKey = XlCalculationInterruptKeyxlAnyKey;
// exClassActiveWindowView = XlWindowViewxlNormalView;
// exClassWorkbooks[0]Activate();
exClassVisible = true;
//wkBookIsAddin = false;
//wkBookHasRoutingSlip = true;
//wkBookAutoUpdateFrequency = 1;
//wkBookActivate();
wkBookInactiveListBorderVisible = false;
WinAPISetWindowPos(exWnd, handleId, 1, 1,
FormFromHandle((IntPtr)handleId)BoundsWidth,
FormFromHandle((IntPtr)handleId)BoundsHeight,
SetWindowPosFlagsSWP_NOZORDER |
SetWindowPosFlagsSWP_NOMOVE |
SetWindowPosFlagsSWP_DRAWFRAME |
SetWindowPosFlagsSWP_NOSIZE);
OnResize(handleId);
}
}
/// <summary>
/// 设置word上面工具栏
/// </summary>
private void SetCommandBars()
{
if (exClass != null)
{
int count = exClassCommandBarsCount;
for (int j = 1; j <= count; j++)
{
string menuName = exClassCommandBars[j]Name;
if (menuName == "Standard")
{
int count_control = exClassActiveWindowApplicationCommandBars[j]ControlsCount;
for (int k = 1; k <= 2; k++)
{
exClassActiveWindowApplicationCommandBars[j]Controls[k]Enabled = false;
}
}
if (menuName == "Menu Bar")
{
exClassActiveWindowApplicationCommandBars[j]Enabled = false;
}
menuName = "";
}
///移除按钮
int hMenu = WinAPIGetSystemMenu(exWnd, false);
if (hMenu > 0)
{
int menuItemCount = WinAPIGetMenuItemCount(hMenu);
for (int m = 1; m <= 8; m++)
{
WinAPIRemoveMenu(hMenu, menuItemCount - m, WinAPIMF_REMOVE | WinAPIMF_BYPOSITION);
}
WinAPIDrawMenuBar(exWnd);
}
}
}
/// <summary>
/// 保存打开的文件
/// </summary>
public void Save()
{
if (wkBook != null)
{
wkBookSave();
}
}
/// <summary>
/// 关闭打开的文件
/// </summary>
public void Close()
{
Save();
//exClassWorkbooksClose();
if (wkBook != null)
{
exClassWorkbooksClose();
SystemRuntimeInteropServicesMarshalReleaseComObject(wkBook);
}
if (exClass != null)
{
exClassQuit();
SystemRuntimeInteropServicesMarshalReleaseComObject(exClass);
exClass = null;
}
GCCollect();
}
/// <summary>
/// 当大小发生改变时
/// </summary>
public void OnResize(int handleId)
{
int borderWidth = SystemInformationBorder3DSizeWidth;
int borderHeight = SystemInformationBorder3DSizeHeight;
int captionHeight = SystemInformationCaptionHeight;
int statusHeight = SystemInformationToolWindowCaptionHeight;
WinAPIMoveWindow(
exWnd,
-2 borderWidth,
-2 borderHeight - captionHeight,
FormFromHandle((IntPtr)handleId)BoundsWidth + 4 borderWidth,
FormFromHandle((IntPtr)handleId)BoundsHeight + captionHeight + 4 borderHeight + statusHeight,
true);
}
/// <summary>
///文档关闭前
/// </summary>
/// <param name="doc"></param>
/// <param name="bCancel"></param>
private void exClass_wkBookBeforeClose(Workbook doc, ref bool bCancel)
{
Save();//确保文档关闭前能保存
bCancel = true;
}
}
}
excel中的数据复制过去为什么会全部变成0啊?
因EXCEL默认常规或数值格式下,超过10位数系以科学记数法显示,超过15位的数以0的形现。
解决出现”变0“问题的方法:
1、事先将单元格格式设置为文本。
2、选定单元格,在其上点鼠标右键——“设置单元格格式”。
3、点“数字”标签——“文本”——“确定”。
4、输入数字时先输入一个半角单引号‘ ,比如,'1234567890123456789。
5、这样就可以避免输入长数字,表格上只显示0的情况了。
EXCEL里多位数字尾数自动变成0怎么办? 比如把2005
excel输入数字后后面几位变成了几个0要改为正常输入显示数字格置成“文本”即
方法步骤如下:
1、打开需要 *** 作的EXCEL表格,选择需要设置的单元格,点击鼠标右键,选择“设置单元格格式”。
2、在“数字”标签页选项中点击“文本”,然后点击下面的确定按钮即可。
3、返回EXCEL表格,在设置为文本格式的单元格重新输入数字发现可正常输入。
excel数字后面变成0怎么还原
首先将会变成0的那个格子事先设置成文本格式,然后将所要做的数字复制,然后进行粘贴,就可以了,粘贴的时候使用匹配目标格式。就可以了。
excel做表格时为什么长的数字输进去后面几位数都变
EXCEL的数值精度为15位,超15位的数字后的非0数字会变成0不可逆转。超过15位的数字文本格式输入。方法如下:
1、如果使用excel默认的方式输入数字之后,会直接显示成科学计数法,而且如果双击查看数据内容,后面几位可能直接是0。这样就会导致数据不准确,需要对单元格格式进行设置。
2、简单方便的方法是直接在输入数字的excel单元格前面先输入英文的'上引号,然后在输入数字,这样excel的单元格直接被转换成文本格式,文本格式就不会自动转成科学计数法。
3、通过单元格数据格式进行设置,对多个单元格进行统一设置格式。可以选中需要输入数字的单元格,点击右键--选择设置单元格格式。
4、选择文本方式。在设置数字格式中,选择文本,然后点击确定保存设置,这样单元格就设置成文本方式。
5、测试输入一串数字。设置过的单元格后,然后输入数字,就会自动显示数字格式,而且不会进行转换。
6、如果需要设置的单元格比较多,可以一次选中多个,进行一起设置单元格格式为文本方式。
扩展资料
1、Mirosoft Excel是电子试算表程序,与Microsoft Word一样,它在市场拥有统治份额。它最初对占优势的Lotus 1-2-3是个竞争者,但最后它卖得比它多、快,于是它成为了实际标准。它适宜Windows和Macintosh平台。它的主要竞争者是OpenOfficeorg Calc、AppleNumbers和CorelQuattro Pro。
2、Microsoft Excel是Microsoft为使用Windows和Apple Macintosh *** 作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。在1993年,作为Microsoft Office的组件发布了50版之后,Excel就开始成为所适用 *** 作平台上的电子制表软件的霸主。
3、Excel是第一款允许用户自定义界面的电子制表软件(包括字体、文字属性和单元格格式)。它还引进了“智能重算”的功能,当单元格数据变动时,只有与之相关的数据才会更新,而原先的制表软件只能重算全部数据或者等待下一个指令。同时,Excel还有强大的图形功能。
为什么在EXCEL里输入较长的数据 会自动把最后几个
很不幸,这不能还原了。或者说,还原后会变成一个15位数字加后面3位是000的新数值。这样为excel中,对数值型数据仅支持15位,超过15位时,超过部分会用0替代。还有,你上面的显示方式为,科学记数法的显示方式。为了规避问题,你需要在输入信息前,先将你的单元格设置为文本型。然后再输入的话,就不会出现这个问题了。
一、打开Excel程序,进入Excel程序主界面中,此时的上方工具栏隐藏。
二、然后,在上方菜单中点击“视图”选项,点击打开、
三、然后,在空白处点击鼠标右键,取消勾选“功能区最小化”。
四、最后,即可在Excel主界面上方找到Excel程序的工具栏,问题解决。
工作表的名字显示在工作簿文件窗口底部的标签里。
相关介绍:
用户可以在标签上单击工作表的名字,来实现在同一工作簿中切换不同的工作表。如果要查找的工作表名没有在底部的标签中显示,可以通过按下标签滚动按钮来将它移动到当前的显示标签中。
在Excel程序界面的下方可以看到工作表标签,默认的名称为“Sheet1”、“Sheet2”、“Sheet3”。每个工作表中的内容相对独立,通过单击工作表标签可以在不同的工作表之间进行切换。
扩展资料
工作簿和工作表间关系:
工作簿和工作表的关系就像书本和页面的关系,每个工作簿中可以包含多张工作表,工作簿所能包含的最大工作表数受内存的限制。
工作簿保存时文件后缀为XLS(03版以前)或XLSX(07版)工作表有时被称为SHEET。工作表默认的名称是sheet1等。EXCEL中工作簿和工作表都可以跨文件引用。
参考资料来源:百度百科-工作簿
以上就是关于c#如何打开EXCEL在程序界面上显示全部的内容,包括:c#如何打开EXCEL在程序界面上显示、求大神帮助!Excel界面变了想还原、excel2010工具菜单在哪等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)