ترجمه جدول از Excel به html تبدیل از Excel به HTML: صحیح ، با کیفیت بالا ، ساده. مواردی که هنگام تبدیل فایل های Excel به HTML باید در نظر داشته باشید

در تماس با

همکلاسی ها

الکسی میچورین

تبدیل از Excel به HTML:

به درستی ، کارآمد ، به سادگی

بنابراین ، وظیفه ما این است که با در نظر گرفتن قالب بندی سند اصلی ، یک سند را با فرمت xls به قالب HTML تبدیل کنیم و در همان زمان با "خون کمی"

فرمول بندی مسئله. یا مشکل چیه؟

بسیاری از مدیران وب اغلب با وظیفه تبدیل فایل ها روبرو هستند مایکروسافت اکسلبه فرمت های دیگر اغلب این با مشکلات زیادی همراه است ، زیرا قالب xls ، همانطور که همه به خوبی می دانند ، مستند نیست.

در برخی موارد ، امکان ذخیره داده های Excel در قالب های مستند و سپس پردازش آنها وجود دارد. با این حال ، این روش اغلب رضایت بخش نیست. فرمت های ساده و آسان برای کارکرد نمی توانند همه اطلاعات قالب بندی یک سند را ذخیره کنند و پیاده سازی یک کنترل کننده قالب پیچیده به طور غیر منطقی زمان بر است.

برای مثال لازم نیست راه زیادی را طی کنید. بسیاری از مشاغل که صفحات وب خود را دارند و به صورت دوره ای آنها را به روز می کنند ، تجارت خود را با استفاده از Excel انجام می دهند. هر بار که اطلاعات سرور به روز می شود ، مدیر وب با یک کار تبدیل مواجه می شود. علاوه بر این ، کار را می توان با جنبه های زیر پیچیده کرد:

اول ، تغییر طراحی وجود دارد. لیست قیمت تهیه شده در Excel معمولاً برای چاپ روی چاپگر سیاه و سفید طراحی شده است. لیست قیمت در وب سایت وجود ندارد. حداقل به همین دلیل ، یک "ذخیره به عنوان یک صفحه وب" ساده مناسب نیست (من قبلاً در مورد کیفیت کد HTML به دست آمده با چنین صرفه جویی سکوت کرده ام).

ثانیاً ، هنگام تبدیل ، لازم است ویژگی های Excel را در نظر بگیریم. به عنوان مثال ، بسیاری از افرادی که لیست قیمت را ویرایش می کنند ، از دستور Format / Line / Hide به طور گسترده استفاده می کنند. در این حالت ، ارتفاع خط صفر می شود و به نظر می رسد خط از روی صفحه ناپدید می شود و چاپ می شود. واضح است که چنین خطوطی نباید به وب سایت نیز برسد. با این حال ، آنها بسیار عالی در قالب های دیگر ذخیره می شوند و هیچ تفاوتی با رشته های معمولی و غیر مخفی ندارند. این منجر به این می شود که دکترین "ذخیره به عنوان متن و فرآیند محدود" نتایج رضایت بخشی را ارائه ندهد.

سوم ، لیست قیمت اغلب از قالب بندی استفاده می کند ، که حفظ آن بسیار مهم است. به عنوان مثال ، ممکن است نام برخی از کالاها به صورت خط کشیده یا رنگی مشخص شود تا نشان دهد که این کالاها لزوماً بوده و خواهند بود ، اما اکنون چنین نیستند. برخی از موقعیت ها ممکن است به صورت مورب و غیره باشد. اگر لیست قیمت را دوباره ذخیره کنید ، همه این اطلاعات بدون هیچ گونه ردیابی ناپدید می شوند قالب ساده، می گویند ، به عنوان متن با برگه محدود شده است.

بنابراین ، وظیفه ما این است که با در نظر گرفتن قالب بندی سند اصلی ، سند را از قالب xls به قالب HTML تبدیل کنیم و در عین حال با "خون کمی" انجام دهیم.

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

من پیشنهاد می کنم اولین کار (صادرات) را با استفاده از ابزارهای Excel حل کنید. در اینجا ما هیچ انتخابی نداریم ، فرمت xls تنها توسط تنها برنامه کاربردی در جهان که آن را درک می کند قابل پردازش است. این دیالکتیک است.

پیشنهاد می کنم مشکل دوم را با استفاده از زبان پرل حل کنید. چرا؟ زیرا این زبان بر کار با رشته ها و حل مشکلاتی مانند ما متمرکز شده است (Perl - Practical Extraction and Report Language - آنچه شما نیاز دارید). از آنجا که این زبان توسط بسیاری از برنامه نویسان مرتبط با توسعه وب شناخته می شود (اگر شما یکی از آنها نیستید و قصد دارید در وب کار کنید ، پس من صمیمانه توصیه می کنم به Perl توجه کنید). زیرا این زبان رایگان است و برای هر کاربری در هر پلتفرمی در دسترس است. و از آنجا که کد Perl من به راحتی قابل تغییر است ، مجبور می شود ، به عنوان مثال ، هر بخش از لیست قیمت را در یک فایل جداگانه قرار دهد ، موقعیت های قیمت را به روش های مختلف مرتب کند ، به روز رسانی ها و پویایی قیمت را پیگیری کند ، هر موقعیت را با HTML تامین کند. زمینه هایی برای سفارش آنلاین در فروشگاه اینترنتی ... در نهایت ، اسکریپت من به راحتی می تواند به یک برنامه CGI برای مدیریت یک سرور وب تبدیل شود.

به نظر من چنین راه حلی تا آنجا که ممکن است انعطاف پذیر ، کاربردی و جمع و جور است ، زیرا هر قسمت از مشکل با وسایلی که برای حل آن مناسب ترین است حل می شود.

بیایید از یک مثال خاص شروع کنیم. من به عنوان "خوکچه هندی" لیست قیمت زیر را ارائه می دهم (شکل 1 را ببینید).

همانطور که می بینید ، تمام عناصر ناخوشایند ذکر شده در بالا را ترکیب می کند: هر دو قالب بندی (پس زمینه ، خطوط برجسته ، برجسته) و خطوط پنهان (اگر دقیق نگاه کنید ، متوجه می شوید که خط دوازدهم بلافاصله از نهم پیروی می کند). بیایید از آنها مراقبت کنیم.

صادر کردن داده ها از Excel

بیایید اولین مشکل را حل کنیم. برای صادر کردن داده ها از Excel ، من یک ماکرو ساده برای آن پیشنهاد می کنم ویژوال بیسیک(شماره خطوط فقط برای راحتی نظر دادن است):

1: جدول زیر 2 جدول ()

2: "

3: "ماکرو که انتخاب جدول را ذخیره می کند

4: "در قالب متن با علائم قالب بندی

5: "

6: با ActiveWindow.RangeSelection

7: c1 =. ستون. ستون

8: c2 =. ستون. تعداد - 1 + c1

9: r1 =. ردیف. ردیف

10: r2 =. ردیف ها. تعداد - 1 + r1

11: پایان با

12: اگر (r1 - r2 = 0 و c1 - c2 = 0) سپس

13: MsgBox _

14: "چیزی که کمی برجسته شده است (برای صرفه جویی) ، -)" ، _

15: vb انتقادی ، "پیام کلان"

16: پایان اگر

17: fileSaveName = Application.GetSaveAsFilename (_

18: InitialFileName: = "فایل" ، _

19: fileFilter: = "فایلهای متنی ( * .txt) ، * .txt" ، _

20: عنوان: = "ذخیره صفحه در قالب ما")

21: If fileSaveName = False سپس

22: MsgBox _

23: "فایلی انتخاب نشده است. اقدامی انجام نشده است."، _

24: vbCritical ، "پیام کلان"

25: در غیر این صورت

28: فایل SaveSameName For Output را به عنوان شماره 1 باز کنید

29: برای r = r1 تا r2

30: l = CStr (Rows (r) .RowHeight)

31: برای c = c1 تا c2

32: با سلول ها (r ، c)

33: l = l + sep + CStr (.Text) + _

37: پایان با

38: بعد

39: چاپ شماره 1 ، l

40: بعد

41: بستن شماره 1

42: پایان اگر

43: End Sub

این ماکرو قسمت انتخابی لیست قیمت را در فایل مشخص شده ذخیره می کند. ماکرو را می توان به نسخه کار لیست قیمت اضافه کرد و به آن دکمه (خارج از منطقه چاپ) گفته شد ، یا می توان آن را در فایل جداگانه... قرار دادن آن در یک سند بسیار آسان است: با ویرایشگر Visual Basic تماس بگیرید (منو: "Tools -> Macro -> Visual Basic Editor" ؛ یا ) ، یک ماژول جدید ایجاد کنید (منو: "Insert -> Module") و متن نشان داده شده در اینجا (بدون شماره خط) را وارد کنید. حالا می توانید یک دکمه (ابزاری در پنل Forms) بکشید و ماکرو را به آن اختصاص دهید.

اجازه دهید نگاهی سریع به نحوه عملکرد این کد بیندازیم.

اولین خط اعلام کلان است. همانطور که می بینید ، من آن را به وضوح table2table نامیدم ، شما می توانید آن را پر صدا تر بنامید.

در سطرهای 6 تا 11 ، مرزهای قسمت انتخابی سند را مشخص می کنیم (به هر حال ، ما فقط قسمت انتخاب شده را ذخیره می کنیم). در حال حاضر c1 و c2 اعداد ستون اول و آخر و r1 و r2 اولین و آخرین خطوط ناحیه انتخاب شده هستند.

علاوه بر این ، در خطوط 12 تا 16 ، بررسی می کنیم که آیا منطقه انتخاب شده است یا ماکرو ما باید فقط با یک سلول کار کند. البته ، شما نمی توانید این کار را انجام دهید ، اما در واقع ، به احتمال زیاد ، این کلان را اجرا نخواهید کرد ، اما مدیرانی که لیست قیمت را ویرایش می کنند ، نمی توانید همیشه روی دقت آنها حساب کنید. بنابراین ، اگر چیزی انتخاب نشده باشد ، کلان ما هشدار می دهد (شکل 2 را ببینید).

در خطوط 17 تا 20 ، گفتگوی Application.GetSaveAsFilename را فراخوانی می کنیم تا کاربر بتواند نام فایل را انتخاب کند (شکل 3 را ببینید).

باز هم ، شما فقط می توانید یک نام ثابت بدهید ، اما من فکر می کنم این ناراحت کننده نیست حتی اگر خودتان از این کلان استفاده می کنید.

خطوط 21 تا 42 شامل یک ساختار if-then-else با یک چک است تا ببیند آیا نام فایل برای ذخیره مشخص شده است یا کاربر دکمه Cancel را در محاوره Save As ... فشار داده است.

اگر کاربر از ذخیره کردن خودداری کرد ، پیام مربوطه نمایش داده می شود (خطوط 22 تا 24) ، اگر نام فایل مشخص شده باشد ، جالب ترین چیز شروع می شود - ذخیره داده ها.

اما قبل از بحث در مورد روش ذخیره سازی (سطرهای 26 تا 41) ، اجازه دهید چند کلمه در مورد اینکه قصد داریم داده ها را در چه فرمت ذخیره کنیم ، بیان کنیم. من ساده ترین فرمت را برای پردازش پیشنهاد می کنم: متن ASCII. هر سطر مربوط به سطری در جدول است که باید ذخیره شود. فیلدها با یک محدود کننده نویسه جدا می شوند. اولین فیلد ارتفاع خط است (این اطلاعات برای فیلتر کردن خطوط "پنهان" مورد نیاز است). همه فیلدهای بعدی محتویات سلول ها هستند ، اما هر یک از این فیلدها شامل چندین زیر زمینه هستند که توسط جدا کننده های خود جدا شده اند. زمینه های فرعی اطلاعات مختلفی را در مورد یک سلول حمل می کنند: محتوا ، پارامترهای قالب بندی.

جدا کننده های میدانی و فرعی ما به ترتیب با کدهای ASCII در سطرهای 26 و 27 تنظیم شده اند. می توانید تقسیم کننده های راحت تری را انتخاب کنید. به عنوان مثال ، اگر مطمئن هستید که داده های شما هرگز نویسه ":" را ندارند ، می توانید آن را به عنوان جدا کننده یا زیرمجموعه در نظر بگیرید.

بیایید خطوط را حلقه کنیم (خط 29).

ارتفاع هر خط را محاسبه کنید. در همان زمان ، ما شروع به آماده سازی یک خط برای ذخیره در یک فایل در متغیر l (خط 30 فهرست) می کنیم.

در یک حلقه (خط فهرست 31) بر روی سلولهای ردیف جدول که ذخیره می شوند ، تمام اطلاعات مربوط به سلولهای مورد علاقه خود را به ردیف l اضافه کنید و محدود کننده ها را در اختیار آن قرار دهید.

چه ویژگی های سلول را ذخیره می کنیم؟

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

ویژگی .MergeCells می گوید آیا سلول بخشی از گروهی از سلول های ادغام شده است یا خیر.

خاصیت .Font.Bold نشان دهنده جسارت متن در سلول است.

ویژگی .Font.Strikethrough نشان می دهد که آیا متن به صورت striktehrough طراحی شده است یا خیر.

برای مثال ما ، احتمالاً به چیز دیگری نیاز نداریم. با این حال ، من نمی توانم تعدادی از خواص مفید را که ممکن است برای شما مفید باشد ذکر نکنم. نام این خواص کاملاً گویا است ، و من در مورد آنها اظهارنظر نمی کنم ، من خود را محدود به لیست می کنم:

  • . نام
  • .Font.FontStyle
  • .اندازه فونت
  • . font. زیر خط
  • .Font.ColorIndex
  • .ontontal
  • .HorizontalAlignment
  • .چیدمان عمودی
  • .ColorIndex
  • .الگو

توجه داشته باشید که همه ویژگی ها به روشنی توسط تابع CStr به نوع رشته ارسال می شوند (خطوط 33 تا 36). این یک روش بسیار مفید است که برای همیشه از سردردهای مربوط به تبدیل نوع شما جلوگیری می کند.

در اینجا باید هشدار مهمی داده شود. نکته این است که تابع CStr قادر به مدیریت مقادیر نامشخص نیست. اگر چنین چیزی در اسناد شما یافت می شود ، به جای CStr می توانید از عملکرد خود برای تبدیل مقادیر به فرمت متن استفاده کنید. به عنوان مثال safeCStr:

1: عملکرد safeCStr (p As Variant) As String
2: اگر IsNull (p) then safeCStr = "" Other safeCStr = CStr (p)
3: تابع پایان

باید توجه داشته باشم که من خودم هرگز با چنین شرایطی روبرو نشده ام ، اما مشاور علمی و فنی مجله به راحتی لیست قیمت را در اینترنت پیدا کرد ، که در برخی از سلول های آن ویژگی Font.Bold تعریف نشده بود. من معتقدم که چنین اسنادی ممکن است ناشی از صادرات داده از برنامه های دیگر باشد. به عنوان مثال ، محصولات 1C می توانند داده ها را به Excel صادر کنند. به طور خلاصه ، چنین وضعیتی امکان پذیر است. - یادداشت نویسنده.

بنابراین ، ناحیه ذخیره شده را انتخاب می کنید (در مثال ما ، این سه ستون اول جدول ، خطوط 4 تا 21 است) ، روی دکمه ایجاد شده کلیک کنید ، نام فایل را انتخاب کنید و فایل ذخیره می شود. بعدش باهاش ​​چیکار کنیم؟

ایجاد یک صفحه HTML از داده های صادر شده

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

همانطور که گفتم ، من یک اسکریپت Perl را پیشنهاد می کنم:

1: #! / Usr / bin / perl -w

3: #سختگیرانه استفاده کنید ؛

5: # my ($ TRUE، $ FALSE) = ("درست" ، "نادرست") ؛

6: my ($ TRUE، $ FALSE) = ("درست" ، "نادرست") ؛

8: sub qtnum (

9: $ t = shift من ؛

10: $ t = ~ s | ، (\ d +) | ، $1|;

11: بازگشت $ t؛

12: }

14: sub qtstring (

15: $ t = تغییر من ؛

16: $ t = s / \ & / \ & / / g؛

17: $ t = s / \ " / \" / g ؛

18: $ t = s / \> / \> / g؛

19: $ t = ~ s / \

20: بازگشت $ t ؛

21: }

23: چاپ<<"TEXT";

24:

25:

26: لیست قیمت یک شرکت خاص

27:

32:

33:

34:

35:

36:

37:

38:

39:

40:

41:

42:

43:

44:

45:

46:

47:

48:

49:

50: TEXT

52: در حالی که (<>) {

53: s /[\ x0A \ x0D] + $ // ؛

54: my @ f = split / \ x09 /؛

55: $ lh = shiftf من ؛

56: my ($ name، $ usd، $ rub) = map ()f؛

57: if ($ lh) (

58: if ($ name-> eq $ TRUE) (# سربرگ بخش پردازش

59: چاپ "

\ n "؛

62 :) else (# پردازش خط معمولی

63: چاپ<<"TEXT" .

64:

65: onMouseOver = "this.className =" al "؛"

66: onMouseOut = "this.className =" "؛">

\ n \ n \ n "؛

80: }

81: چاپ<<"TEXT";

82:

83:

84: TEXT

85 :) دیگر (

86: warning "hidden line:". $ Name ->. "\ N"؛

87: }

88: }

90: چاپ<<"TEXT";

91:

لیست قیمت یک شرکت خاص
نام محصول قیمت
cu مالیدن
" .

60: $ name->.

61: "

67: TEXT

68: ($ name-> معادل $ TRUE؟ " ":"") .

69: qtstring ($ name->).

70: ($ name-> معادل $ TRUE؟ "":"") .

71: qq |

| .

72: ($ usd-> eq

$ TRUE؟ " ":"") .

73: qtnum ($ usd->).

74: ($ usd-> eq $ TRUE؟ "":"") .

75: qq |

| .

76: ($ rub-> معادل

$ TRUE؟ " ":"") .

77: qtnum ($ rub->).

78: ($ rub-> معادل $ TRUE؟ "":"") .

79: "

92:

93:

94: TEXT

اسکریپت ورودی را از یک فایل مشخص شده به عنوان پارامتر خط فرمان یا از ورودی استاندارد می گیرد و کد HTML را به خروجی استاندارد چاپ می کند. یعنی می توانید آن را به صورت زیر اجرا کنید:

perl file2html.pl file.txt> file.html

یا مثلاً مثل این:

cat file.txt | perl file2html.pl> file.html

بیایید ببینیم این اسکریپت چگونه کار می کند (فرض می کنم خواننده کمی با Perl آشنا است).

خط اول خط جادویی استاندارد هر اسکریپت یونیکس است. کاربران ویندوز می توانند آن را نادیده بگیرند. خط سوم شامل دستور استفاده از دستورات سختگیرانه است. فقط هنگام اشکال زدایی برای شما مفید خواهد بود.

در سطرهای 5 و 6 ، ما متغیرهای $ TRUE و $ FALSE را تعریف خواهیم کرد که حاوی مقادیر درست و غلط برگردانده شده توسط Excel می باشد. واقعیت این است که روسی اکسل از کلمات روسی ، اروپایی - انگلیسی استفاده می کند. خط مورد نظر خود را کامنت کنید و یک مورد اضافی را نیز کامنت کنید.

روش qtnum (خطوط 8 تا 12) برچسب هایی را به رکورد شماره اضافه می کند و "3.14" را به "3" تبدیل می کند. 14" یعنی سنت ها و سکه ها با فونت کوچکتری نمایش داده می شوند. این یک اقدام کاملاً آرایشی است.

روال qtstring (سطرهای 13 تا 21) نویسه های "ناامن" را نقل می کند: & (و) ، "(نقل قول دوگانه) ،< (больше), >(کوچکتر). این ، همانطور که فهمیدید ، یک اقدام اجباری است.

خطوط 23 تا 50 سربرگ سند HTML را چاپ می کند.

در حلقه while (سطوح 52 تا 88) ، فایل ورودی را خط به خط می خوانیم ، آن را به سند HTML تبدیل می کنیم و آن را به stdout می نویسیم.

در سطر 53 ، کاراکترهای انتهای خط از خط خوانده شده بعدی قطع می شوند. من از توابع استاندارد Perl chop و chomp استفاده نمی کنم ، زیرا پرونده در حال پردازش تحت Windows ایجاد می شود و handler (اسکریپت Perl ما) نیز می تواند تحت UNIX کار کند. فایل را می توان به روشهای بسیار عجیب و غریب منتقل کرد. به عنوان مثال ، بسیاری از مردم احتمالاً می خواهند کد من را کمی تغییر دهند و آن را به یک برنامه CGI برای مدیریت سرور خود تبدیل کنند. بنابراین ، من به توابع استاندارد متکی نیستم ، اما به صراحت می نویسم که باید تمام \ x0A و \ x0D کاراکترها را در انتهای خط حذف کنم.

اولین فیلد ، ارتفاع خط ، در متغیر $ lh (خط 55) ذخیره می شود. همه زمینه های دیگر به زیر زمینه ها تقسیم می شوند. در نتیجه ، متغیرهای $ name ، $ usd ، $ rub به آرایه هایی اشاره می کنند که حاوی تمام اطلاعات لازم در مورد محتوا و قالب بندی سلول مربوطه هستند. $ name - سلول با نام محصول ، $ usd - سلول با قیمت دلار ، $ rub - سلول با قیمت به روبل. این کار با یک خط 56 انجام می شود.

اگر ارتفاع خط صفر نباشد ، بلاک را از 58 تا 84 خط اجرا می کنیم. در غیر این صورت ، به stderr جریان خطای استاندارد هشدار می دهیم که یک رشته پنهان شناسایی شده و نادیده گرفته شده است (خط 86).

پردازش سطرهای جدول ممکن است در نگاه اول پیچیده به نظر برسد.

اول از همه ، ما متوجه می شویم که با چه چیزی سروکار داریم: در خط 58 ، حقیقت ویژگی MergeCells سلول را با نام محصول بررسی می کنیم. اگر این سلول ادغام شود ، این سربرگ بخش است ، سپس کد ایجاد کننده سرصفحه اجرا می شود (سطرهای 59 تا 61).

اگر مشخص شود که ما با یک خط معمولی سروکار داریم ، بلاک else اجرا می شود (خطوط 63 تا 79). در اینجا یک ردیف از یک جدول HTML تشکیل شده است ، که در آن عناصر قالب بندی اضافی (برای ردیف های جدول در صورت لزوم) وارد شده است.

توجه داشته باشید که ما یک ترفند اساسی DHTML را در سند خود ایجاد کرده ایم. سطری که نشانگر ماوس روی آن قرار دارد همیشه در جدول مشخص می شود. این باعث می شود جدول راحت تر خوانده شود. موافقت کنید که دستیابی به چنین جلوه ای با استفاده از Excel (با ذخیره یک سند به عنوان صفحه وب) دشوار است.

خطوط 90-94 برچسب های پایانی سند را نشان می دهد. لطفاً توجه داشته باشید که باید یک خط خالی در انتهای فایل با برنامه وجود داشته باشد. در غیر این صورت ، آخرین کلمه ("TEXT") (خط 94) توسط مترجم پرل به درستی پردازش نمی شود.

برای خروجی به شکل (ص 82) مراجعه کنید.

موافقم ، چیزی برای جنگیدن وجود داشت!

اشکالات چه چیز دیگری می توانید اضافه کنید؟

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

اسکریپت شده در ویژوال بیسیک

در اینجا به احتمال زیاد باید مجموعه پارامترهای ذخیره شده سلول را تغییر دهید. من لیستی از مفیدترین موارد را در بحث این سناریو ارائه می دهم. اگر به چیز عجیب و غریبی نیاز دارید ، به اسناد مایکروسافت ، Range Object Properties مراجعه کنید.

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

احتمالاً ، برای اسناد واقعی به راحتی می توان شرایطی را تنظیم کرد که طبق آن کلان مساحت فهرست قیمت (یا سند دیگر) را که باید ذخیره شود تعیین می کند. سپس می توان این فرآیند را خودکار کرد. راه حل من (نگه داشتن منطقه انتخاب شده) همه کاره تر از راحت است.

سرانجام ، خواننده می تواند به درستی بپرسد که چرا کلان for اکسل سطرهای پنهان را ذخیره می کند ، زیرا می توان آنها را در مرحله صادرات حذف کرد؟ به خاطر توجه خواننده (به طور مخفیانه به یک حرکت متقابل به تشخیص من امیدوارم). حفظ خطوط پنهان واقعاً ضروری نیست ، من فقط به ذخیره همه چیز عادت کرده ام. علل؟ ممکن است هنوز به خطوط پنهان نیاز داشته باشید. یا ممکن است بخواهید دقیقاً بدانید کدام خطوط نادیده گرفته شده اند (همانطور که به خاطر دارید ، اسکریپت Perl من ، هر خط پنهان را گزارش می کند). علاوه بر این ، اطلاعات ارتفاع خط می تواند معیاری برای شناسایی هدرها باشد ... اگرچه البته می توانید کد VB را کمی تغییر دهید و خطوط پنهان را حفظ نکنید.

اسکریپت پرل

البته احتمالاً همه کدهای HTML (که بیشتر اسکریپت هستند) به طور قابل توجهی تغییر خواهند کرد. البته ، شما باید تعداد ستون ها ، سرصفحه را تغییر دهید ، بسیاری از آنها خطوط جداکننده خالی من را از کد HTML حذف می کنند ، جداول تو در تو را اضافه می کنند ، توابع DHTML را تغییر می دهند ، جداول CSS را اضافه می کنند ... اما این مهمترین و مهمترین آنها نیست تغییر اساسی نیست

به احتمال زیاد شما مجبورید این اسکریپت را "تقسیم" کنید تا اسناد بزرگ را به بخش ها تقسیم کنید و این بخش ها را در فایل های مختلف ذخیره کنید ، زیرا لیست قیمت یک شرکت بسیار متوسط ​​با فرمت HTML می تواند صدها کیلوبایت بکشد. هر سرگردان وب منتظر چنین سند برای بارگیری نیست. ممکن است بخواهید مرتب سازی را اضافه کنید (اگر اقلام موجود در لیست قیمت چاپ شده و در لیست قیمت وب باید به ترتیب متفاوتی ظاهر شوند).

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

من به شما توصیه می کنم چنین روش هایی (که مستقیماً به طرح HTML مربوط نمی شود) را در قالب برنامه ها یا ماژول های جداگانه سازماندهی کنید. به هر حال ، بخشی از کار بر روی طرح بندی HTML را می توان به مکانیسم SSI سپرد و اجازه دهید اسکریپت سند SHTML را جمع آوری کند. مجموعه ای از ابزارهای ساده همیشه راحت تر ، انعطاف پذیرتر و قابل کنترل تر از یک ابزار جهانی هستند. از چنگکی که سازندگان تلفن مایکروویو و مسواک تلویزیون روی آن راه می روند ، دوری کنید.

لیست نکات و پیشنهادات بی پایان است ، اما من فکر می کنم که من قبلاً تخیل شما را بیدار کرده ام ، و سپس می توانید بدون من کنار بیایید. تطبیق مثال ذکر شده در اینجا با شرایط خاص شما ممکن است چندین ساعت کار طول بکشد. اما در این صورت پاداش سخاوتمندانه ای دریافت خواهید کرد ، زیرا تمام به روزرسانی های بعدی اطلاعات را در سرور وب خود تنها با چند ضربه روی صفحه کلید و ماوس انجام می دهید!


در تماس با

اگر یک صفحه گسترده Excel خوب ایجاد کرده اید و اکنون می خواهید آن را به عنوان یک صفحه وب منتشر کنید ، ساده ترین راه برای انجام این کار این است که آن را به یک فایل HTML خوب قدیمی صادر کنید. در این مقاله ، ما چندین روش برای تبدیل داده ها از Excel به HTML را بررسی می کنیم ، جوانب مثبت و منفی هر روش را تعیین می کنیم و این تبدیل را گام به گام با شما انجام می دهیم.

با استفاده از ابزار Save As Web Page جداول Excel را به HTML تبدیل کنید

فرض کنید شما یک گزارش چند منظوره در اکسل ایجاد کرده اید و اکنون می خواهید تمام این اطلاعات را به همراه نمودار و جدول محوری به وب سایت شرکت منتقل کنید تا همکاران بتوانند آنها را بدون شروع به کار Excel از طریق مرورگرهای وب بصورت آنلاین مشاهده کنند.

برای تبدیل داده های Excel به HTML مراحل زیر را دنبال کنید. این دستورالعمل ها برای Excel 2013 ، 2010 و 2007 معتبر است.


توصیه:اگر برای اولین بار است که یک کتاب کار Excel را به یک فایل HTML تبدیل می کنید ، عاقلانه است که ابتدا صفحه وب را در هارد دیسک خود ذخیره کنید تا در صورت لزوم قبل از انتشار صفحه در اینترنت یا در شبکه محلی ویرایش کنید.

اظهار نظر: HTML ایجاد شده توسط Excel بسیار تمیز نیست! وقتی بعد از تبدیل یک میز بزرگ با طراحی پیچیده ، آن را در هر ویرایشگر HTML باز کنید و کد را قبل از انتشار پاک کنید ، عالی خواهد بود. در نتیجه ، صفحه سایت به طرز چشمگیری سریعتر بارگیری می شود.

5 نکته ای که هنگام تبدیل فایل های Excel به HTML باید در نظر داشته باشید

هنگام استفاده از ابزار Save As Web Page ، نحوه عملکرد گزینه های اصلی آن مهم است تا از رایج ترین اشتباهات و اجتناب از رایج ترین پیام های خطا جلوگیری شود. در این بخش ، یک مرور سریع از گزینه هایی که هنگام تبدیل فایل های Excel به HTML باید در نظر گرفته شود ، خواهید یافت.

1. پشتیبانی از فایل ها و لینک ها

همانطور که می دانید ، صفحات وب اغلب حاوی تصاویر و سایر فایل های پشتیبانی کننده و همچنین پیوندهایی به وب سایت های دیگر هستند. با تبدیل یک فایل اکسل به یک صفحه وب ، برنامه به طور خودکار فایل های مرتبط و پیوندها را برای شما جمع آوری کرده و آنها را در یک پوشه فرعی ذخیره می کند.

هنگامی که فایلهای پشتیبانی کننده مانند نمودارها و بافتهای پس زمینه را در یک سرور وب ذخیره می کنید ، اکسل همه پیوندها را ایجاد می کند نسبت فامیلی... یک پیوند نسبی (URL) به یک فایل در همان وب سایت اشاره می کند. به جای نام کامل سایت (به عنوان مثال ، href = ” / images / 001.png”) نام فایل یا پوشه اصلی را مشخص می کند. هنگامی که هر مورد ذخیره شده به عنوان پیوند نسبی را حذف می کنید ، Microsoft Excel به طور خودکار فایل پیوندی را از پوشه کمکی حذف می کند.

بنابراین ، قاعده اصلی این است همیشه صفحه وب و فایلهای پشتیبانی کننده خود را در یک مکان نگه داریددر غیر این صورت صفحه وب به درستی نمایش داده نمی شود. اگر صفحه وب خود را به مکان دیگری منتقل یا کپی می کنید ، حتماً پوشه فرعی را در همان مکان کپی کنید ، در غیر این صورت پیوندها اشتباه خواهند بود. اگر صفحه وب را دوباره در مکان دیگری ذخیره کنید ، Microsoft Excel پوشه کمکی کنار آن را به طور خودکار کپی می کند.

اگر صفحات وب را در مکان های مختلف ذخیره می کنید یا اگر فایل اکسل دارای پیوندهایی به وب سایت های خارجی است ، در چنین مواردی ، مطلقپیوندها پیوندهای مطلق شامل مسیر کامل یک فایل یا صفحه وب است که می توانید از هر کجا به آن دسترسی داشته باشید ، به عنوان مثال: www.yourdomain / section / page.htm.

2. ایجاد تغییرات و ذخیره مجدد صفحه وب

از لحاظ تئوری ، می توانید کتاب کار اکسل را به عنوان یک صفحه وب ذخیره کنید ، سپس صفحه وب حاصله را در اکسل باز کرده ، تغییرات را اعمال کرده و فایل را دوباره ذخیره کنید. با این حال ، در این مورد ، برخی از ویژگی های Excel در دسترس نخواهند بود. به عنوان مثال ، هر نمودار موجود در کتاب کار شما به نقاشی های مستقل تبدیل می شود و شما نمی توانید آنها را مانند قبل در اکسل تغییر دهید.

بنابراین ، بهترین راه این است که ابتدا کتاب کار اصلی Excel را با برخی تغییرات به روز کنید ، سپس آن را به عنوان یک کتاب کار Excel (.xlsx) ذخیره کنید و تنها پس از آن دوباره آن را به یک صفحه وب تبدیل کنید.

3. انتشار مجدد خودکار یک صفحه وب

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

اگر پارامتر را فعال کنید انتشار مجدد خودکار(چاپ مجدد خودکار) ، سپس هر بار که کتاب کار را ذخیره می کنید ، پیامی ظاهر می شود که از شما می خواهد تأیید کنید که آیا می خواهید چاپ مجدد خودکار را فعال یا غیرفعال کنید. اگر می خواهید برگه Excel به طور خودکار منتشر شود ، سپس را انتخاب کنید فعال کردن ...(روشن کنید ...) و کلیک کنید خوب.

با این حال ، ممکن است شرایطی وجود داشته باشد که شما مایل به انتشار خودکار برگه Excel یا عناصر آن نباشید ، به عنوان مثال ، اگر فایل حاوی اطلاعات محرمانه باشد یا توسط شخصی که شخص مورد اعتماد نیست اصلاح شده باشد. در این حالت ، می توانید انتشار خودکار را موقت یا دائم غیرفعال کنید.

برای غیر فعال کردن موقت چاپ مجدد ، اولین گزینه پیشنهادی را در پست بالا انتخاب کنید - در حالی که این کتاب کار باز است ، ویژگی انتشار مجدد خودکار را غیرفعال کنید(وقتی این کتاب باز است ، قابلیت چاپ مجدد خودکار را غیرفعال کنید). با این کار انتشار خودکار برای جلسه فعلی اکسل غیرفعال می شود ، اما دفعه بعد که کتاب کار را باز می کنید ، دوباره فعال می شود.

برای غیر فعال کردن چاپ مجدد خودکار به طور دائمی برای همه موارد انتخاب شده ، یک کتاب کار Excel را باز کنید ، به محاوره بروید انتشار به عنوان صفحه وب(انتشار صفحه وب) و کلیک کنید انتشار(پست). در فصل مواردی برای انتشار(موارد منتشر شده) در لیست انتخاب کنید(انتخاب کنید) موردی را که نمی خواهید منتشر کنید انتخاب کرده و روی دکمه کلیک کنید برداشتن(حذف).

4. ویژگی های Excel در صفحات وب پشتیبانی نمی شود

متأسفانه ، وقتی صفحات Excel خود را به HTML تبدیل می کنید ، برخی از ویژگی های بسیار مفید و محبوب Excel در دسترس نمی شوند:

  • دارندقالب بندی کلماتهنگام ذخیره کردن برگه Excel به عنوان پشتیبانی نمی شود صفحه وب تک فایل(صفحه وب موجود در این فایل) ، بنابراین مطمئن شوید که آن را به عنوان ذخیره می کنید صفحه وب(صفحه وب). نمودارهای میله ای ، نوارهای رنگی و مجموعه نمادها توسط هر دو قالب صفحه وب پشتیبانی نمی شوند.
  • چرخانده یا veمتن عمودیهنگام صادر کردن داده ها از Excel به قالب صفحه وب پشتیبانی نمی شود. هر متن چرخانده یا عمودی در کتاب کار شما به متن افقی تبدیل می شود.

5. شایع ترین مشکلاتی که هنگام تبدیل فایل های Excel به HTML پیش می آید

هنگام تبدیل کتاب کار Excel به صفحه وب ، ممکن است با مشکلات شناخته شده زیر روبرو شوید.

گاهی مدیر می آید و می گوید: - من می خواهم این جدول را در سایت ببینم.
و برگها
دو مسیر استاندارد ظاهر می شود:
- یا از طریق یک پنل مدیریت خاص در ویرایشگر ، یک جدول را مجسم کرده و آن را با مقادیر پر کنید.
- یا با دسته ها به طور مستقیم در html و همچنین با مقادیر پر کنید.
و اگر سلولهای 3x5 وجود داشته باشد اشکالی ندارد ، اما اگر تعداد بیشتری وجود داشته باشد.

چند سال پیش که با این مسئله روبرو شدم ، روشی را بر اساس استفاده از Windows Live Writer (نرم افزاری برای نوشتن و ارسال پست به برخی از بسترهای وبلاگ نویسی) کشف کردم.

ساده است. جدول کپی شده را با یک خمیر مخصوص در WLW بچسبانید و قالب را حفظ کنید

سپس به برگه پایین "منبع" در WLW بروید و تمام کدهای بزرگ را از قسمت کپی کنید

به این ترتیب یا تقریباً مشابه نسخه اصلی می شود. زمان ، به استثنای هزینه های یکبار پیوست WLW به برخی از حساب های وبلاگ ، چند ثانیه طول می کشد.
یک مثال در اینجا codepen است

در نتیجه ، ما یک صفحه واحد با 320 خط متن دریافت می کنیم.

در آنجا هنوز باید آنچه را که باید استفاده کنید پیدا کنید ...

به عنوان مثال ، بیایید یک صفحه گسترده Excel شامل 4 ستون و 12 سطر را در نظر بگیریم.
ستون الف - شماره گذاری موارد به ترتیب صعودی خطوط مورد
ستون B - تعداد موارد
ستون ج - قیمت یک مورد
ستون D - مجموع ارزش اقلام در یک خط به عنوان محصول قیمت یک کالا بر اساس مقدار آنها
ستون D سلول D12 - مجموع هزینه تمام اقلام

ناگفته نماند که خود جدول به شکل است برتری داشتنفایل نمی توان جا داددر مطالب سایت به دلایل مختلف. برای قرار دادن آن ، انتشار در قالب نمایش متنی داده ها ، مورد نیاز است تبدیل به Htmlقالب سازگار.

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

در نتیجه ، یک جدول شامل 8 ستون و 13 ردیف دریافت می کنیم.

به داخل سلول A1در قالب متنی که می نویسیم Htmlبرچسب جدول


به سلولهای محدوده A2-A11قبل از هر سلول ستون بدر قالب متن ، قسمت ابتدایی را بنویسید Htmlبرچسب های سطر و سلول
به داخل سلول I14در قالب متن ، پایانی را بنویسید Htmlبرچسب جدول

به سلولهای محدوده C2-C11 , E2-E11 , G2-G11 قبل از هر سلول ستون د , افو حدر قالب متن ، بسته و باز را بنویسید Htmlبرچسب های سلول

به سلولهای محدوده I2-I13بعد از هر سلول ستون حدر قالب متن ، پایانی را بنویسید Htmlبرچسب های سلول و سطر

بیشتر داخل سلول ها A12و A13به عنوان متن ، ابتدا را بنویسید Htmlبرچسب خط و باز شدن Htmlتگ سلول با ویژگی کلسپنبه هم پیوستگی در رشته ها 12 و 13 ستون ها ب , دو افدر یک سلول

در نتیجه ، جدولی پر از داده های اولیه دریافت می کنیم برتری داشتنقالب و برچسب های HTMLبه عنوان متن

بیشتر در ویرایشگر Excel, جدول موجود در محدوده را انتخاب کنید A1-I13، در منوی برنامه ، فرمان را انتخاب کنید "ذخیره به عنوان"و انتخاب را به عنوان ذخیره کنید فایل متنی(به عنوان مثال - tabltxt.txt) ، رمزگذاری مهم نیست ، می توانید مانند کدگذاری ذخیره کنید UTF-8و در رمزگذاری خانم-داس... اکسل پنجره هشدار را نمایش می دهد:

کلید را فشار دهید "خوب"و اکسل دوباره پنجره هشدار را نشان می دهد:

کلید را فشار دهید "آره"و قطعه انتخاب شده به عنوان یک فایل متنی ذخیره می شود tabltxt.txt

علاوه بر این ، کارهای بیشتری در زمینه تبدیل به ویرایشگر HTML منتقل می شود ، در اصل ، همه چیز دیگر را می توان به صورت ساده انجام داد ویرایشگر متن، اما گزینه با ویرایشگر HTML ترجیح داده.

باز کردن پرونده tabltxt.txtدر هر ویرایشگر متن ، همه محتوا را به عنوان متن انتخاب کرده و در آن چسباند Htmlویرایشگر در حالت HTML... بیایید متن منبع زیر جدول را دریافت کنیم. همچنین می توانید انتخاب فایل ذخیره شده را از Excel بگیرید. تنها تفاوت این است که بسته به رمزگذاری فایل ذخیره شده ، ممکن است حاوی باشد "مصنوعات"در قالب کاراکترهای اضافی همانطور که در تصویر صفحه در سلول ها مشاهده می کنید ( " " ).

بعد ، همه چیز را حذف می کنیم "مصنوعات"در صورت وجود ، و همه فضاها. ما هم می نویسیم سبک CSSبرای سلول های جدول: td (padding: 1px 12px؛ text-align: center؛)در نتیجه ، متن اصلی HTML جدول را در قالب HTML دریافت می کنیم. (تصویر از صفحه نمایش بدون قالب بندی ساختاری HTML مانند یک ویرایشگر متن نشان داده می شود)... در این فرم ، متن منبع جدول برای استفاده به عنوان مناسب است جداول HTMLداده ها برای انتشار در مواد ، زیرا یک قالب کاملاً HTML است.

پس از ذخیره جدول به عنوان یک فایل HTML و مشاهده آن در مرورگر ، صفحه زیر را مشاهده می کنیم که از قالب Excel به قالب HTML تبدیل شده است.

معنی همه اقدامات فوق به یک چیز خلاصه می شود:

1 . قبل از هر خط جدول Excel ، خط HTML و شروع فرم دهید سلول های HTML.
2 . بین ستون های جدول اکسل ، انتهای یک و آغاز یک سلول HTML دیگر فرم دهید.
3 . بعد از هر سطر از جدول اکسل ، انتهای سلول ها و خطوط HTML را ایجاد کنید.
4 . در ابتدا و انتهای جدول اکسل ، ابتدا و انتهای جدول HTML را به عنوان برچسب جدول تشکیل دهید.

ناگفته نماند که برای نمایش بهتر داده های جدول ، باید کلاس های CSS را در آن بنویسید برچسب های HTMLسطرها و سلولهای جدول به عنوان مثال ، با ویژگی های تورفتگی ، رنگ و سبک فونت ، حاشیه و سایر طرح ها. اما این یک موضوع جداگانه است که در این مقاله در نظر گرفته نشده است ...