نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • بررسی ها
  • ذخیره یک سند صفحه گسترده در اکسل 1s. نکاتی برای ذخیره یک سند صفحه گسترده در اکسل برای کار بیشتر با آن

ذخیره یک سند صفحه گسترده در اکسل 1s. نکاتی برای ذخیره یک سند صفحه گسترده در اکسل برای کار بیشتر با آن

برای کار بیشتر با داده های به دست آمده در یک سند صفحه گسترده از سیستم 1C هر نسخه، می توان آنها را در قالب xls (x) ذخیره کرد.

همه چیز خوب خواهد بود، اما وقتی در Excel-e باز می شود، کاربر بلافاصله متوجه می شود که مشکلی در جدول وجود دارد، خوب، بله، هیچ برچسب برگه کتاب وجود ندارد. ٪

بنابراین در نسخه 7 1C بود و به 8 منتقل شد، بله پیشرفت وجود دارد، در 8-ke می توانید با فرمت ذخیره کنید xlsx، فرمت اصلی نسخه‌های اخیر Excel-i.

برای حل مشکل، چندین دستکاری ساده وجود دارد، اولین چیزی که برای هر کاربری به ذهن می رسد این است که جدول را با فرمت دیگری ذخیره کند، اما حتی در اینجا نیز نتیجه دلخواه وجود ندارد، سپس شروع به کپی پیست در یک کتاب جدید می کنیم. برتری داشتن.
گزینه دیگری نیز وجود دارد، همانطور که برای کاربران پیشرفته وجود دارد، رفتن به تنظیمات است اکسل و در قسمت Advanced کادر "نمایش برچسب های برگه" را علامت بزنید. با توجه به پردازش مکرر داده های دریافتی از 1C در قالب جداول مسطح و تجزیه و تحلیل بیشتر داده ها در قالب جداول محوری و سایر روش های ارائه داده ها در اکسل، صحیح است، اما همچنین معمول است.

به همین ترتیب، از دویدن روی چک باکس ها خسته شدم و مشکل را حل کردم، مثلاً اینترنت را جست و جو کردم و با نگاهی به برخی پیشرفت های دیگر، یک ساده (برای بعضی ها آکاردئون دکمه ای است، برای بعضی ها) پیاده سازی کردم. این یک عصا است، با این حال، آنها در مورد سلیقه بحث نمی کنند) مکانیزم اتوماسیون مشکل نمایش برچسب های ورق را حل می کند.

تنها چیزی که نیاز دارید استفاده از دو ویژگی پنجره اکسل است:

DisplayWorkbookTabs // پرچم برای نمایش برگه های برگه کتاب TabRatio // نسبت عرض ناحیه برگه کتاب کار به عرض نوار اسکرول افقی پنجره (به عنوان عددی بین 0 (صفر) و 1، مقدار پیش فرض 0.6)

TabDocument.Write (FullFileName، FileTypeSpreadDocument.XLS); Excel = New COMObject ("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0.6; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // اگر نیاز به کار بیشتر با کتاب دارید
//Excel.Application.Quit() // اگر همین الان خروج کنیم

TabDocument.Write (FullFileName، "XLS"); Excel = CreateObject ("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0.6; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // اگر نیاز به کار بیشتر با کتاب دارید
//Excel.Application.Quit() // اگر همین الان خروج کنیم

این روش ساده است. ماهیت آن این است که شی سند صفحه گستردهروش هایی دارد:

  • سوختن (< ИмяФайла>, < ТипФайлаТаблицы >) برای آپلود داده ها در یک فایل؛
  • خواندن (< ИмяФайла>, < СпособЧтенияЗначений >) برای بارگیری داده ها از یک فایل.

توجه!

متد Write() هم روی کلاینت و هم روی سرور موجود است. متد Read() فقط در سمت سرور موجود است. باید این را به خاطر بسپارید
هنگام برنامه ریزی تعامل مشتری و سرور

نمونه ای از ذخیره یک سند صفحه گسترده در یک فایل را در نظر بگیرید. باید به هر نحوی شی TableDocument ایجاد و پر کرد و تخلیه کردنفایل فقط با یک خط انجام می شود:

TabDoc . Write(FilePath، SpreadsheetDocumentFileType.XLSX);

اینجا TabDoc- صفحه گسترده تولید شده، مسیر فایل- نام فایل برای آپلود، SpreadsheetDocumentFileType.XLSX- فرمت فایل تولید شده فرمت های Excel زیر پشتیبانی می شوند:

  • فرمت XLS95 - Excel 95؛
  • فرمت XLS97 - Excel 97;
  • XLSX فرمت اکسل 2007 است.

TabDoc = سند صفحه گسترده جدید.
TabDoc . Read(PathToFile, WayToReadSpreadsheetDocumentValues.Value);

اینجا مسیر فایل- مسیر فایل اکسل دانلود شده. WayToReadValuesSpreadDocument.Valueنحوه تفسیر داده های خوانده شده از سند منبع را تعیین می کند. گزینه های موجود:

  • معنی؛
  • متن

تبادل از طریق OLE

تبادل از طریق فناوری اتوماسیون OLE شاید رایج ترین گزینه برای کار با فایل های اکسل به صورت برنامه ای باشد. این به شما امکان می دهد از تمام عملکردهای ارائه شده توسط اکسل استفاده کنید، اما نسبت به روش های دیگر کندتر است. تبادل از طریق OLE نیاز به نصب MS Excel دارد:

  • در رایانه کاربر نهایی، اگر تبادل در سمت مشتری انجام شود.
  • در رایانه سرور 1C: Enterprise، اگر تبادل در سمت سرور انجام شود.

مثال تخلیه:

// یک شی COM ایجاد کنید
Excel = New COMObject ("Excel.Application");
// هشدارها و سوالات را غیرفعال کنید
برتری داشتن . نمایش هشدارها = نادرست;
// یک کتاب جدید ایجاد کنید
کتاب = اکسل کتاب های کار اضافه کردن()؛
// تعیین موقعیت در صفحه اول
ورق = کتاب کاربرگ (1)؛

// مقدار را در سلول بنویسید
ورق . سلول ها (شماره ردیف، شماره ستون). مقدار = CellValue;

// فایل را ذخیره کنید
کتاب . SaveAs (نام فایل)؛


برتری داشتن . Quit();
اکسل = 0;

مثال ها خواندن:

// -- انتخاب 1 --

// یک شی COM ایجاد کنید
Excel = New COMObject ("Excel.Application");
// کتاب باز
کتاب = اکسل کتاب های کار باز کن( مسیر فایل )

ورق = کتاب کاربرگ (1)؛

// کتاب را ببند
کتاب . بستن (0);

// اکسل را ببندید و حافظه آزاد کنید
برتری داشتن . Quit();
اکسل = 0 ;

// -- گزینه 2 --

// کتاب باز
کتاب = GetCOMObject( مسیر فایل )
// تعیین موقعیت بر روی برگه مورد نظر
ورق = کتاب کاربرگ (1)؛

// مقدار سلول را بخوانید، این معمولاً جایی است که حلقه بای پس سلول قرار دارد
CellValue = Sheet. سلول ها (شماره ردیف، شماره ستون). ارزش؛

// کتاب را ببند
کتاب . کاربرد. Qui t();

برای میان برتمام ردیف های پر شده برگه اکسل، می توانید از ترفندهای زیر استفاده کنید:

// -- انتخاب 1 --
تعداد ردیف = برگه سلول ها (1، 1). سلول های ویژه (11). ردیف؛
برای RowNumber = 1 با تعداد ردیف حلقه
CellValue = Sheet. سلول ها (شماره ردیف، شماره ستون). ارزش;
چرخه پایان

// -- گزینه 2 --
LineNumber = 0 ;
در حالی که True Loop
LineNumber = LineNumber + 1 ;
CellValue = Sheet. سلول ها (شماره ردیف، شماره ستون). ارزش؛
اگر ValueFilled نیست (CellValue) سپس
سقط
EndIf
چرخه پایان

به جای پیمایش متوالی تمام خطوط برگه، می توانید همه داده ها را در یک آرایه تخلیه کنیدو با او کار کنید این رویکرد هنگام خواندن حجم زیادی از داده ها سریعتر خواهد بود:

TotalColumns = Sheet. سلول ها (1، 1). سلول های ویژه (11). ستون؛
TotalRows = ورق سلول ها (1، 1). سلول های ویژه (11). ردیف؛

منطقه = ورق Range(Sheet. Cells(1, 1), List. Cells(TotalRows, TotalColumns));
داده ها = منطقه ارزش. تخلیه();

جدول زیر بیشترین ویژگی ها و روش های درخواستی را برای کار با اکسل از طریق OLE فهرست می کند:

عمل کد اظهار نظر
کار با اپلیکیشن
تنظیم نمایان بودن پنجره برنامه برتری داشتن . قابل رویت= نادرست
تنظیم حالت نمایش هشدار (نمایش/عدم نمایش) برتری داشتن . DisplayAlerts= نادرست
بستن برنامه برتری داشتن . Quit();
کار با کتاب
یک کتاب جدید ایجاد کنید کتاب = اکسل کتاب های کار اضافه کردن();
باز کردن یک کتاب کار موجود کتاب = اکسل کتاب های کار Open(FileName);
ذخیره یک کتاب کتاب . SaveAs(نام فایل);
بسته شدن کتاب کتاب . بستن (0);
کار با ورق
تنظیم برگه فعلی ورق = کتاب برگه های کاری (SheetNumber);
تنظیم نام ورق . نام = نام;
تنظیم حفاظت ورق . محافظت();
حذف حفاظت ورق . UnProtect();
تنظیم جهت صفحه ورق . تنظیمات صفحه. جهت گیری = 2; 1 - پرتره، 2 - منظره
تنظیم حاشیه سمت چپ ورق . تنظیمات صفحه. حاشیه چپ = اکسل. CentimetersToPoints (سانتی متر);
تعیین حد بالایی ورق . تنظیمات صفحه. TopMargin = اکسل. CentimetersToPoints (سانتی متر);
تنظیم حاشیه مناسب ورق . تنظیمات صفحه. RightMargin = اکسل. CentimetersToPoints (سانتی متر);
تنظیم کران پایین ورق . تنظیمات صفحه. BottomMargin = Excel. CentimetersToPoints (سانتی متر);
کار با ردیف ها، ستون ها، سلول ها
تنظیم عرض ستون ورق . ستون ها (ColumnNumber). ColumnWidth = عرض;
حذف یک خط ورق . ردیف (شماره ردیف). حذف();
حذف یک ستون ورق . ستون ها (ColumnNumber). حذف()؛
حذف یک سلول ورق . سلول ها (شماره ردیف، شماره ستون). حذف();
تنظیم یک مقدار ورق . سلول ها (شماره ردیف، شماره ستون). ارزش = ارزش;
ادغام سلول ها ورق . محدوده (ورق. سلولها (شماره ردیف، شماره ستون)، ورق. سلولها (شماره ردیف1، شماره ستون1)). ادغام();
در حال نصب فونت ورق . سلول ها (شماره ردیف، شماره ستون). فونت Name = FontName;
تنظیم اندازه فونت ورق . سلول ها (شماره ردیف، شماره ستون). فونت Size = FontSize;
تنظیم فونت پررنگ ورق . سلول ها (شماره ردیف، شماره ستون). فونت پررنگ = 1 ; 1 - پررنگ، 0 - عادی
تنظیم مورب ورق . سلول ها (شماره ردیف، شماره ستون). فونت کج = 1 ; 1 - مورب، 0 - عادی
تنظیم فونت خط دار ورق . سلول ها (شماره ردیف، شماره ستون). فونت زیر خط بکشید = 2 ; 2 - خط دار، 1 - خیر

برای اینکه بفهمید کدام ویژگی باید تغییر کند یا کدام روش را فراخوانی کنید، می توانید استفاده کنید ماکروهابرتری داشتن. اگر یک ماکرو را با اقدامات لازم ضبط کنید، سپس می توانید کد برنامه را در VBA ماکرو ضبط شده مشاهده کنید.

با استفاده از COMSafeArray

هنگام تخلیه مقادیر زیادی داده از 1C به اکسل، می توانید از شی برای افزایش سرعت استفاده کنید COMSafeArray. همانطور که توسط سینتکس کمک کننده تعریف شده است، COMSafeArray یک بسته بندی شی روی یک آرایه چند بعدی است. SafeArrayاز COM. به شما امکان می دهد SafeArray را برای تبادل داده بین اشیاء COM ایجاد و استفاده کنید. به عبارت ساده، این مجموعه ای از مقادیر است که می تواند برای تبادل بین برنامه ها با استفاده از فناوری OLE استفاده شود.

// COMSafeArray را ایجاد کنید
ArrayCom = New COMSafeArray ("VT_Variant"، TotalColumns، TotalRows);
// COMSafeArray را پر کنید
برای Str = 0 ردیف کل - 1 حلقه
برای تعداد = 0 ستون کل - 1 چرخه
ArrayCom . SetValue(Number, Str, Value);
چرخه پایان
چرخه پایان
// تخصیص مقادیر ناحیه برگه اکسل از COMSafeArray
ورق . محدوده (ورق. سلولها (1، 1)، فهرست. سلولها (مجموع ردیفها، کل ستونها)). مقدار = ArrayCom;

تبادل از طریق ADO

یک فایل اکسل، زمانی که از طریق ADO رد و بدل می شود، یک پایگاه داده است که با استفاده از پرس و جوهای SQL قابل دسترسی است. نصب MS Excel مورد نیاز نیست، اما یک درایور ODBC مورد نیاز است که از طریق آن دسترسی انجام می شود. درایور ODBC مورد استفاده با تعیین رشته اتصال به فایل تعیین می شود. معمولاً درایور مورد نیاز از قبل بر روی رایانه نصب شده است.

تبادل از طریق ADO به طور قابل توجهی سریعتر از تبادل از طریق OLE است، اما هنگام تخلیه، هیچ راهی برای استفاده از عملکرد اکسل برای تزئین سلول ها، علامت گذاری صفحات، تنظیم فرمول ها و غیره وجود ندارد.

مثال تخلیه:


اتصال = COMObject جدید ("ADODB.Connection");


ترکیب . ConnectionString="

|داده منبع=" + نام فایل + ";
;
ترکیب . باز کن()؛ // اتصال را باز کنید

// یک شی COM برای دستور ایجاد کنید
Command = New COMObject("ADODB.Command");
تیم

// متن دستور را برای ایجاد جدول اختصاص دهید
تیم . commandtext= "ایجاد جدول [Sheet1] (Clumn1 char(255)، Column2 date, Column3 int, Column4 float)";
تیم . اجرا کردن()؛ // اجرای دستور

// اختصاص متن دستور برای افزودن ردیف جدول
تیم . commandtext= "InSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) مقادیر ('abvgdeo', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // اجرای دستور

// حذف دستور و بستن اتصال
فرمان = تعریف نشده؛
ترکیب . بستن();
اتصال = تعریف نشده;

برای ایجاد یک صفحه جدید و شکل دادن به ساختار آن، می توانید از آبجکت ها استفاده کنید ADOX.کاتالوگو ADOX.Table. در این صورت کد به شکل زیر خواهد بود:

// یک شی COM برای کار با کتاب ایجاد کنید
کتاب = COMObject جدید ("ADOX.Catalog");
کتاب . ActiveConnection = اتصال;

// یک شی COM برای کار با ساختار داده روی برگه ایجاد کنید
Table = New COMObject("ADOX.Table");
جدول . نام = "Sheet1" ;
جدول . ستون ها. Append("Column1" , 202 );
جدول . ستون ها. Append("Column2" , 7 );
جدول . ستون ها. Append("Column3" , 5 );
جدول . ستون ها. Append("Column4" , 5 );

// یک برگه در کتاب با ساختار توصیف شده ایجاد کنید
کتاب . جداول پیوست (جدول)؛
جدول = تعریف نشده
کتاب = تعریف نشده؛

در مثال بالا، در روش

جدول . ستون ها. ضمیمه(«ستون 1»، 202);

پارامتر دوم نوع ستون را مشخص می کند. این پارامتر اختیاری است، در اینجا برخی از مقادیر نوع ستون وجود دارد:

  • 5-adDouble;
  • 6 - ارز تبلیغاتی;
  • 7 - adDate;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203-adLongVarWChar.

مثال خواندن:

// یک شی COM برای اتصال ایجاد کنید
اتصال = COMObject جدید ("ADODB.Connection");

// رشته اتصال را تنظیم کنید
ترکیب . ConnectionString="
|Provider=Microsoft.ACE.OLEDB.12.0;
|داده منبع=" + نام فایل + ";
|Extended Properties=""Excel 12.0 XML;HDR=YES"";";
ترکیب . باز کن()؛ // اتصال را باز کنید

// یک شی COM برای دریافت انتخاب ایجاد کنید
Selection = New COMObject("ADODB.Recordset");
RequestText = "انتخاب * از [Sheet1$]";

// درخواست را اجرا کنید
نمونه . Open(QueryText، Connection)؛

// دور زدن نتیجه انتخاب
در حالی که نمونه گیری نیست. حلقه EOF()
ColumnValue1 = انتخاب. زمینه های. مورد ("ستون 1"). ارزش ; // ارجاع با نام ستون
مقدار ستون 2 = انتخاب. زمینه های. مورد (0). ارزش؛ // بازیابی با نمایه ستون
نمونه . MoveNext();
چرخه پایان

نمونه . بستن()؛
نمونه = تعریف نشده
ترکیب . بستن()؛
اتصال = تعریف نشده؛

در رشته اتصال، پارامتر HDRتعیین می کند که چگونه خط اول روی برگه درک می شود. گزینه های ممکن:

  • بله - خط اول به عنوان نام ستون ها درک می شود. مقادیر را می توان با نام و با نمایه ستون دسترسی داشت.
  • خیر - خط اول به عنوان داده در نظر گرفته می شود. مقادیر فقط با نمایه ستون قابل دسترسی هستند.

در مثال های ارائه شده، تنها چند شی ADO در نظر گرفته شده است. مدل شیء ADO از اشیاء زیر تشکیل شده است:

  • ارتباط؛
  • فرمان؛
  • مجموعه رکوردها
  • رکورد؛
  • زمینه های؛
  • جریان؛
  • خطاها؛
  • مولفه های؛
  • خواص

بدون برنامه نویسی آپلود کنید

برای ذخیره داده ها از 1C به اکسل، همیشه توصیه نمی شود که به برنامه نویسی متوسل شوید. اگر در حالت Enterprise کاربر بتواند داده های مورد نیاز برای آپلود را نمایش دهد، پس امکان ذخیره آنها در اکسل بدون برنامه نویسی وجود دارد.

برای ذخیره یک سند صفحه گسترده (به عنوان مثال، نتیجه یک گزارش)، می توانید دستور را فراخوانی کنید صرفه جویییا ذخیره به عنوان…منوی اصلی.

در پنجره باز شده باید فهرست، نام و فرمت فایل ذخیره شده را انتخاب کنید.

برای ذخیره داده های لیست های پویا (مثلاً یک لیست آیتم)، باید:

  1. با استفاده از دستور، داده ها را به یک صفحه گسترده خروجی دهید بیشتر ⇒ نمایش لیست...;
  2. سند صفحه گسترده را در قالب مورد نیاز ذخیره کنید.

برای کار بیشتر با داده های به دست آمده در یک سند صفحه گسترده از سیستم 1C هر نسخه، می توان آنها را در قالب xls (x) ذخیره کرد.

همه چیز خوب خواهد بود، اما وقتی در Excel-e باز می شود، کاربر بلافاصله متوجه می شود که مشکلی در جدول وجود دارد، خوب، بله، هیچ برچسب برگه کتاب وجود ندارد. ٪

بنابراین در نسخه 7 1C بود و به 8 منتقل شد، بله پیشرفت وجود دارد، در 8-ke می توانید با فرمت ذخیره کنید xlsx، فرمت اصلی نسخه‌های اخیر Excel-i.

برای حل مشکل، چندین دستکاری ساده وجود دارد، اولین چیزی که برای هر کاربری به ذهن می رسد این است که جدول را با فرمت دیگری ذخیره کند، اما حتی در اینجا نیز نتیجه دلخواه وجود ندارد، سپس شروع به کپی پیست در یک کتاب جدید می کنیم. برتری داشتن.
گزینه دیگری نیز وجود دارد، همانطور که برای کاربران پیشرفته وجود دارد، رفتن به تنظیمات است اکسل و در قسمت Advanced کادر "نمایش برچسب های برگه" را علامت بزنید. با توجه به پردازش مکرر داده های دریافتی از 1C در قالب جداول مسطح و تجزیه و تحلیل بیشتر داده ها در قالب جداول محوری و سایر روش های ارائه داده ها در اکسل، صحیح است، اما همچنین معمول است.

به همین ترتیب، از دویدن روی چک باکس ها خسته شدم و مشکل را حل کردم، مثلاً اینترنت را جست و جو کردم و با نگاهی به برخی پیشرفت های دیگر، یک ساده (برای بعضی ها آکاردئون دکمه ای است، برای بعضی ها) پیاده سازی کردم. این یک عصا است، با این حال، آنها در مورد سلیقه بحث نمی کنند) مکانیزم اتوماسیون مشکل نمایش برچسب های ورق را حل می کند.

تنها چیزی که نیاز دارید استفاده از دو ویژگی پنجره اکسل است:

DisplayWorkbookTabs // پرچم برای نمایش برگه های برگه کتاب TabRatio // نسبت عرض ناحیه برگه کتاب کار به عرض نوار اسکرول افقی پنجره (به عنوان عددی بین 0 (صفر) و 1، مقدار پیش فرض 0.6)

TabDocument.Write (FullFileName، FileTypeSpreadDocument.XLS); Excel = New COMObject ("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0.6; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // اگر نیاز به کار بیشتر با کتاب دارید
//Excel.Application.Quit() // اگر همین الان خروج کنیم

TabDocument.Write (FullFileName، "XLS"); Excel = CreateObject ("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0.6; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // اگر نیاز به کار بیشتر با کتاب دارید
//Excel.Application.Quit() // اگر همین الان خروج کنیم

برترین مقالات مرتبط