- °³¿ä
- ±âº» °³³ä
- XLS ÆÄÀÏ ÀúÀåÇϱâ Àü¿¡ CSV ÆÄÀÏ ÀúÀåÇϱâ
- Gotcha
- ¾ÖµåÀÎ ¿¡·¯ ¸Þ½ÃÁö º¸±â
- ¾ÖµåÀÎÀÌ Á¦´ë·Î ·ÎµåµÇÁö ¾Ê´Â °æ¿ì
- AddIn Ŭ·¡½º¸¦ ¸ø ã´Â °æ¿ì
- ¸µÅ©
1 °³¿ä
¿ÀÇǽº ÇÁ·Î±×·¥ ¾ÖµåÀÎ ÇÁ·Î±×·¡¹ÖÀ» Á» ´õ ½±°Ô ÇØÁÖ´Â ÇÁ·¹ÀÓ¿öÅ©.
ÀÏ´Ü ¿¢¼¿ÀÌ Å¸°ÙÀÌ´Ù. VisualBasic ½ºÅ©¸³Æ® ¹× ODBC¸¦ ÅëÇÑ ÀÚµ¿È¿¡ ÇѰ踦 ´À²¼±â ¶§¹®ÀÌ´Ù. »ç½Ç °ÔÀÓ Á¦ÀÛ°ú °ü·ÃµÈ ÀÛ¾÷¿¡¼ ¿¢¼¿ ¸»°í ´Ù·ê °ÍÀÌ ÀÖÀ»±î ½Í±âµµ ÇÏ´Ù.
À½...2005¿¡´Â ¿Ö ¼Ö·ç¼ÇÀÌ ¾øÁö...?
2 ±âº» °³³ä
ÀÏ´Ü Office ÀÚü´Â ExcelAutomation Ç׸ñ °°Àº µ¥¼ º¸¾ÒµíÀÌ COM ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇϰí ÀÖ´Ù. VSTO´Â À¯Àú°¡ ¸¸µç ¾ÖµåÀΰú ÀÌ COM ÀÎÅÍÆäÀ̽º »çÀÌ¿¡¼ µ¿ÀÛÇÏ´Â ÀÏÁ¾ÀÇ ¹Ìµé¿þ¾î´Ù. ±×·¸±â ¶§¹®¿¡ ±×³É ÇÁ·Î±×·¥ Â¥¼ DLL¸¸ ´ú·· ¼³Ä¡ÇÏ¸é µÇ´Â °Ô ¾Æ´Ï¶ó VSTO ·±Å¸ÀÓµµ ¼³Ä¡ÇØÁà¾ß ÇÑ´Ù.
3 XLS ÆÄÀÏ ÀúÀåÇϱâ Àü¿¡ CSV ÆÄÀÏ ÀúÀåÇϱâ
WorkbookBeforeSave À̺¥Æ® Çڵ鷯¸¦ Á¤ÀÇÇØÁÖ¸é µÈ´Ù. Âü°í·Î ÀÌ »ùÇÿ¡¼ »ý¼ºÇÏ´Â CSV ÆÄÀÏ Æ÷¸ËÀº °³ÀÎÀûÀ¸·Î »ç¿ëÁßÀÎ È®Àå(-_-) CSV Æ÷¸ËÀÌ´Ù. ¾Æ...±×·±µ¥ ³Ê¹« ´À¸®´Ù. °³¶±°°ÀÌ ´À¸®´Ù. Ȥ½Ã³ª ½Í¾î¼ StreamWriter.Write ¾²´Â ºÎºÐ StringBuilder·Î ´ëÃ¼ÇØºÃ´Âµ¥µµ ¶È°°´Ù. ±×³É ¼¿ ÁÖ¿í ÀÐ¾î¼ ÅØ½ºÆ® ÆÄÀÏ »ý¼ºÇÏ´Â °Çµ¥ ¿Ö À̸® ´À¸®Áö? ³»°¡ ¹» À߸øÇß³ª?
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
...
Application.WorkbookBeforeSave += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler(ThisAddin_Application_WorkbookBeforeSave);
...
}
private void ThisAddin_Application_WorkbookBeforeSave(Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
{
try
{
string fileName = Wb.FullName + ".csv";
using (FileStream file = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
StreamWriter writer = new StreamWriter(file, System.Text.Encoding.Default);
foreach (Excel.Worksheet sh in Wb.Worksheets)
{
writer.Write("$" + sh.Name + ",----------------------------------------------------------------------\r\n");
Excel.Range used = sh.UsedRange;
for (int r = 1; r <= used.Rows.Count; ++r)
{
for (int c = 1; c <= used.Columns.Count; ++c)
{
Excel.Range cell = (Excel.Range)sh.Cells[r, c];
writer.Write(MakeCsvEncodedString(cell.Text.ToString()));
if (c != used.Columns.Count)
writer.Write(",");
}
writer.Write("\r\n");
}
}
writer.Flush();
}
}
catch (System.Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
}
}
private string MakeCsvEncodedString(string original)
{
string result = "";
if (original.IndexOfAny(",\"\r\n".ToCharArray()) == -1)
{
result = original;
}
else
{
result += "\"";
for (int k=0; k<original.Length; k++)
{
if (original[k] == '\"')
result += "\"\"";
else
result += original[k];
}
result += "\"";
}
return result;
}
4 Gotcha
4.1 ¾ÖµåÀÎ ¿¡·¯ ¸Þ½ÃÁö º¸±â
VSTO_SUPPRESSDISPLAYALERTS ȯ°æº¯¼ö °ªÀ» 0À¸·Î ¼¼ÆÃÇÏ¸é ¾ÖµåÀÎ ·Îµå ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ ¸Þ½ÃÁöâÀÌ ¶á´Ù.
4.2 ¾ÖµåÀÎÀÌ Á¦´ë·Î ·ÎµåµÇÁö ¾Ê´Â °æ¿ì
±âº»ÀûÀ¸·Î ¾ÖµåÀÎÀº º¸¾È ¹®Á¦ ¶§¹®¿¡ Á¦´ë·Î ·ÎµåµÇÁö ¾Ê´Â´Ù. ÀÌ ¹®Á¦¸¦ ±Ùº»ÀûÀ¸·Î ÇØ°áÇϱâ À§Çؼ´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀÌ °¡Àå È®½ÇÇÏ´Ù.
Deploying Office Solutions Using Windows Installer Version 3¸¦ ´Ù¿î¹Þ¾Æ¼ ¼³Ä¡ÇÑ´Ù.
±âº»ÀûÀ¸·Î ¼³Ä¡µÇ´Â Æú´õ´Â C:\Program Files\Microsoft Visual Studio 2005 Tools for Office SE Resources´Ù.
- ¼³Ä¡µÈ Æú´õ·Î °¡¼ project Æú´õ ¾ÈÀ¸·Î µé¾î°¡¸é SetSecurity ÇÁ·ÎÁ§Æ®°¡ ÀÖ´Ù. ÀÌ ÇÁ·ÎÁ§Æ®¸¦ Æú´õ Åëä·Î Ä«ÇÇÇØ¼ ¾ÖµåÀÎ ÇÁ·ÎÁ§Æ®°¡ ÀÖ´Â Æú´õ¿¡´Ù º¹»çÇÑ´Ù.
- º¹»çÇÑ SetSecurity ÇÁ·ÎÁ§Æ®¸¦ ¼Ö·ç¼Ç¿¡´Ù Ãß°¡ÇÑ´Ù.
- ¼Â¾÷ ÇÁ·ÎÁ§Æ®¿¡´Ù SetSecurity ÇÁ·ÎÁ§Æ®ÀÇ Ãâ·ÂÀ» Ãß°¡ÇÑ´Ù.
¾Æ. µÇ´Â ÁÙ ¾Ë¾Ò´Âµ¥ ¾Æ´Ï¾ú´Ù. caspolÀ» ÀÌ¿ëÇØ¼ ¹Ì¸® ¼¼ÆÃÇØ¹ö·È±â ¶§¹®¿¡ µÇ´Â °Å¿´´Ù. ´õ Á¶»ç°¡ ÇÊÈ¿.
4.3 AddIn Ŭ·¡½º¸¦ ¸ø ã´Â °æ¿ì
2005¶û 2008À» °°ÀÌ ±ò¾Æ¼ ±×·± °ÇÁö´Â ¸ð¸£°Ú´Ù¸¸, ÀÌ °æ¿ì¿¡´Â ¾î¼Àºí¸® ÂüÁ¶¸¦ ¼öÁ¤ÇØÁÖ¸é µÈ´Ù. Microsoft.Office.Tools.Common ¾î¼Àºí¸®¿¡ ´ëÇÑ ·¹ÆÛ·±½º¸¦ C:\Program Files\Reference Assemblies\Microsoft\VSTO\v8.0\Microsoft.Office.Tools.Common.dll·Î ÁöÁ¤ÇØÁØ´Ù.
5 ¸µÅ©
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)